how to use standard library with C++ modules? (eg: `import std.io`)

对着背影说爱祢 提交于 2019-12-22 06:06:13

问题


The basic example given in How do I use C++ modules in Clang? works for me but doesn't import the standard library (eg via import std.stdio;); after going over http://clang.llvm.org/docs/Modules.html it wasn't clear how to use the standard library in a C++ module, eg:

// foo.cppm:
export module foo;
// works: #include <stdio.h>
// none of these work:
import std.stdio;
import std.io;
import std;

export void test_foo(){
  printf("hello world\n");
}

this gives an error: clang++ -std=c++17 -fmodules-ts --precompile foo.cppm -o foo.pcm foo.cppm:4:8: fatal error: module 'std.stdio' not found

NOTE: clang++ --version Apple LLVM version 9.1.0 (clang-902.0.39.1) Target: x86_64-apple-darwin17.4.0 I'm on OSX. I also tried clang from brew install llvm and also didn't work.

What's the simplest way to make something like this work?


回答1:


Clang does not currently support import std.io syntax in C or C++.

From clang's module documentation:

At present, there is no C or C++ syntax for import declarations. Clang will track the modules proposal in the C++ committee. See the section 'Includes as imports' to see how modules get imported today.

When you pass the -fmodules flag, #include statements are automatically translated to import.

From the Includes as imports section:

modules automatically translate #include directives into the corresponding module import. For example, the include directive

#include <stdio.h>

will be automatically mapped to an import of the module std.io.



来源:https://stackoverflow.com/questions/49683282/how-to-use-standard-library-with-c-modules-eg-import-std-io

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!