GCC 可以配置为忽略#pragma 指令吗?

Can GCC be configured to ignore #pragma directives?

我们正在编译,运行 用户使用以下编译命令在沙箱环境中提交了 C++ 程序:

g++ -std=gnu++11 -O2 -o program.exe program.cpp
但是,用户可以使用 pragma 指令覆盖编译标志。例如,可以使用以下代码覆盖优化级别:
#pragma GCC optimize("Ofast")
我们无法控制提交编译的源代码,但我们需要防止编译选项被覆盖。

有没有办法用 GCC 忽略 pragma 指令?

快速浏览一下手册页,答案是 "No",gcc 没有 "disable pragmas" 功能。

作为一个真正荒谬的解决方法,您可能会简单地要求所有条目完全省略字符串 pragma(对块 the _Pragma operator 也不区分大小写),拒绝任何违反该要求的条目。任何更复杂的事情都需要编写您自己的 C 源代码解析器,我怀疑这是否值得。考虑到您可以使用预处理器玩的令牌连接技巧,我什至不确定这是否会起作用(我正在等待演示此类利用的评论)。