当我在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可以编译命名空间,如何处理呢?
答案 0 :(得分:2)
虽然只要编写标准C ++,您自己的C ++代码就是可移植的,但是一个特定编译器提供的C ++标准库的头文件无法保证,并且几乎从不可以移植到另一个编译器。
您无法在Ubuntu上使用visual studio 2010的头文件和clang。
;
cout<<"hello world!"