我想写一个简单的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'
那我该怎么做呢?
答案 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::cout
,std::cin
等,或者使用
using std::cout;
using std::cin;
等
答案 3 :(得分:0)
我遇到了同样的问题,
g++ template.cpp
compare<int>com1(3,7);
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打字。