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

标签 c++ gcc pragma

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

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

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

最佳答案

快速浏览一下手册页,答案是“否”,gcc 没有“禁用编译指示”功能。

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

关于c++ - GCC 可以配置为忽略#pragma 指令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54100634/

相关文章:

c++ - "="运算符返回什么?

macos - 将 Homebrew 与备用 GCC 一起使用

asp.net - Safari 浏览器忽略我的无缓存

c++ - GTKMM set_value_vfunc 函数是一个谎言吗?

c++ - 如何在 C++ 中连接到 SQL Server

c++ - 如果我设置优化-O3,是否在 gcc 中完成了 C++ 整个程序优化?

c++ - 隐式调用不可访问的虚拟基类的构造函数

visual-studio - 人们如何处理警告 C4793 : 'some_function' : function compiled as native?

c# - #pragma warning 禁用代码列表及其含义

c++ - 函数模板无法编译