clang 3.3可以在vs 2010中使用命名空间编译代码吗?

时间:2015-02-03 08:56:12

标签: c++

当我在Ubuntu系统上使用clang 3.3编译程序时,错误对我来说很难。       源代码如下:

          #include <iostream>
          using namespace std;
          int main()
         {
               cout<<"hello world!"
               return 0;
          }

代码是在vs 2010上编程的,所以命令行是:

 clang++ -c -g -fms-compatibility -fdelayed-template-parsing -I /home/qincai/桌面/IRSA/IRSA/IRSA/vcinclude -emit-llvm -fmacro-backtrace-limit=0 -std=c++11 -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-ignored-attributes -Wno-attributes -Wno-implicit-exception-spec-mismatch -Wno-deprecated-declarations -Wno-unused-value -imacros macro.h -Wno-microsoft teststd.cpp -o teststd.o

vcinclude是vs2010的目录,包括来自windows系统的文件和copide。 错误如下:

    (1)ios:13:1: error: expected member
      name or ';' after declaration specifiers
_STD_BEGIN
^~~~~~~~~~
/home/qincai/桌面/IRSA/IRSA/IRSA/vcinclude/yvals.h:488:22: note: expanded from
      macro '_STD_BEGIN'
  #define _STD_BEGIN    namespace std {
                        ^~~~~~~~~

是不是说clang无法在vc ++中编译命名空间? IF clang可以编译命名空间,如何处理呢?

1 个答案:

答案 0 :(得分:2)

虽然只要编写标准C ++,您自己的C ++代码就是可移植的,但是一个特定编译器提供的C ++标准库的头文件无法保证,并且几乎从不可以移植到另一个编译器。

您无法在Ubuntu上使用visual studio 2010的头文件和clang。

;

结束时,您的代码也遗漏了cout<<"hello world!"