0

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

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

它给了我 1 个致命错误:

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

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

我试过这样:

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

那么我该如何进行这项工作呢?

4

4 回答 4

2

不要在末尾添加 .h。

#include <iostream>

那应该解决它。

于 2013-01-20T06:46:08.143 回答
2

iostream属于 C++ 而不是 C。所以你应该把它包括为

#include <iostream>

此外,由于您使用 C++ 编程,因此您应该将源文件命名为以 .cpp 而不是 .c 结尾,以使编译器和其他所有人清楚您想要使用 C++。此外,您可能需要clang++在第一次编译器调用中调用(但我不确定在插件的上下文中)

于 2013-01-20T06:47:35.873 回答
1

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

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

你可以从使用这个开始

#include <iostream>
using namespace std;

一旦您对命名空间更加熟悉,您可以删除using语句 & 代替 usestd::coutstd::cin或使用

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

等等

于 2013-01-20T06:47:27.117 回答
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 输入。

于 2021-01-01T02:29:59.373 回答