我有一个main.cpp文件,其中只有以下代码:
#include <iostream>
#include "include/rapi/RApi.h"
using namespace std;
int main() {
std::cout << "Test\n";
return 0;
}
编译时,我想从代码中看到警告,而不是从外部包含的文件中看到警告。过去我已经能够实现这一目标,但是在编译标志中我可能会丢失某些内容,因为当我不想看到它们时,我会继续从包含的头文件中查找错误。
这是我的编译命令:
g++ -isystem include -pedantic -Wall -Wextra main.cpp -o main.o
我想从main.cpp中看到警告和错误,但不能从包含文件夹中的文件中看到警告和错误。
我已经尝试过
-isysteminclude
-isysteminclude/rapi
,将-isystem
传递到标志的末尾,但无济于事。我在这里想念什么吗?
最佳答案
您需要在编译行中添加-isystem include
,然后在代码中还使用:
#include "rapi/RApi.h"
(不是
include/rapi/RApi.h
)。 -isystem
选项仅将“系统头”属性应用于使用该搜索路径查找的文件。如果将完整路径放在#include
中,则GCC会直接查找该路径,而不使用-isystem
路径,因此不会应用“系统 header ”属性。关于使用
<>
和""
,行为的确切差异本质上是实现定义的。无需猜测,只需查看各种SO问题和答案,例如this one即可。