我有一个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即可。

07-26 09:30