【发布时间】:2019-01-08 22:26:57
【问题描述】:
我们正在使用以下编译命令在沙盒环境中编译和运行用户提交的 C++ 程序:
g++ -std=gnu++11 -O2 -o program.exe program.cpp
但是,用户可以使用 pragma 指令覆盖编译标志。例如,可以使用以下代码覆盖优化级别:
#pragma GCC optimize("Ofast")
我们无法控制提交编译的源代码,但我们需要防止编译选项被覆盖。
有没有办法使用 GCC 忽略 pragma 指令?
【问题讨论】:
-
编译前为什么不能处理源码?
-
@hyde:可能比看起来更难,尤其是考虑到 C99/C++11
_Pragma运算符。