使用预编译头文件时,如何在 GCC 中避免 `#pragma once in main file`?

How can I avoid `#pragma once in main file` in GCC when using precompiled headers?

这是一个最小的例子:

// pch.h
#pragma once

#include <iostream>

而我运行:

g++ -x c++-header -o pch.h.gch -c pch.hpp

当我运行命令时,我得到

pch.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         

据我了解,此行为是 GCC 在阅读了他们的 bugzilla 错误跟踪器后有意为之;所以,这不是一个错误,而是一个功能。

如何禁用此警告?是否有我可以通过将其添加为 pragma 语句来抑制的警告编号或名称:

#pragma GCC diagnostic ignored "-Wcan-i-set-something-here"

From my understanding, this behavior is intended by GCC

据我所知,这是一个错误。

How can I disable this warning?

不幸的是,您似乎不能,因为警告不能由选项控制。在我看来,这也是一个错误。

您可以使用头部防护而不是 #pragma once 来规避此问题。