为iostream带来致命错误

时间:2013-01-20 06:36:53

标签: c++ llvm clang

我想写一个简单的clang插件。所以我刚刚执行了llvm-clang中提供的"PrintFunctionNames"插件。但是当我试图执行命令时:

  

“clang -cc1 -load ../../Debug+Asserts/lib/libPrintFunctionNames.so   -plugin print-fns some-input-file.c“

它给了我一个致命的错误:

fatal error: 'iostream.h' file not found
#include<iostream.h>
        ^
1 error generated.

我也尝试使用-I选项为'iostream'的include目录提供路径,但它仍然给我同样的错误。

我尝试过:

  

'clang ++ -I // usr / include / c ++ / 4.6 -cc1 -load   ../../../../Release+Asserts/lib/libPrintFunctionNames.so -plugin   print-fns ak.cpp'

那我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

最后不要添加.h。

#include <iostream>

那应该解决它。

答案 1 :(得分:1)

iostream属于C ++而不是C.所以你应该把它包含在

#include <iostream>

此外,由于您使用C ++进行编程,因此您应该将源文件命名为.cpp而不是.c,以使编译器和其他所有人明确表示您希望使用C ++。您也可能需要在第一次编译调用中调用clang++(但我不确定插件的上下文中){/ p>

答案 2 :(得分:0)

在ISO标准化C ++语言之后,名为iostream.h的头文件被重命名为iostream。将程序更改为使用#include <iostream>代替它,它应该编译。

您还需要在每个include之后添加using namespace std;语句(或使用std::对iostream函数/对象的每个引用添加前缀。)

您可以先使用

开始
#include <iostream>
using namespace std;

一旦您对名称空间感到满意,就可以删除using语句&amp;而是使用std::coutstd::cin等,或者使用

using std::cout;
using std::cin;

答案 3 :(得分:0)

我遇到了同样的问题,

  • 模板.cpp
g++ template.cpp
compare<int>com1(3,7);
  1. 列表项
compare<double>com2(12.34,56.78); 
compare<char>com3('a','x'); 
cout<<",the max value:"<<com1.max()<<endl;   
cout<<",the max value:"<<com2.max()<<endl;
cout<<",the max value:"<<com3.max()<<endl;
return  0;

问题是代码段组合不好,下次用shift+table打字。