gpt4 book ai didi

c++ - 如何为一段代码启用 -fpermissive

转载 作者:行者123 更新时间:2023-11-30 16:07:24 25 4
gpt4 key购买 nike

我有一个 C 单头库,我想在我的 C++ 项目中使用它。通常,我只需包含该文件就可以了,因为 C++ 几乎是 C 的超集。但是,该库有一个跳过初始化的 goto,这违反了C++ 标准。

我可以通过在 GCC 上启用 -fpermissive 编译器标志来解决这个问题,但我希望错误能够为我的代码的其余部分正确触发。

有没有一种方法可以仅针对这个头文件启用它(可能类似于#pragma GCC Diagnostic XXX)。

最佳答案

#pragma GCC optimize "blah"或函数属性 __attribute__((optimize("blah"))) ,其作用类似于为该文件/该特定函数的其余部分给出的参数 -fblah ,但是它似乎不适用于 -fpermissive:

$ cat foo.cpp
#pragma GCC optimize "permissive"

void foo(int x) {
}
$ g++-8 -c -Wall -Wextra foo.cpp
foo.cpp:1:22: warning: bad option ‘-fpermissive’ to pragma ‘optimize’ [-Wpragmas]
#pragma GCC optimize "permissive"
^~~~~~~~~~~~
foo.cpp:3:16: warning: bad option ‘-fpermissive’ to attribute ‘optimize’ [-Wattributes]
void foo(int x) {

一种选择是将需要此功能的函数单独放入一个文件中,并配置构建系统以使用 -fpermissive 编译该文件,尽管这会破坏仅 header 模型。或者修复代码,使其根本不需要该选项。

关于c++ - 如何为一段代码启用 -fpermissive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59641669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com