对于 gcc 链接器和 C,如果指针最终计算结果为 NULL,是否有任何方法可以触发链接器错误? [已关闭]

问题描述 投票:0回答:1

起初,我尝试使用 __attribute__ ((__nonnull__)) 来执行此操作,但这只会在参数表达式立即为 NULL 时触发 gcc 编译器警告。对我来说,问题是,如果参数表达式随后在链接器内计算为 NULL(例如,如果它是通过 const 指针取消引用间接实现的),则此非空测试似乎不会被触发。

那么,当链接器内的表达式 finally 计算结果为 0 时,有没有办法触发某种 gcc linker 错误?我想将其用作一种非常晚的静态断言,因为非空似乎还没有晚到真正安全。

注意:我目前只是在寻找特定于 gcc 的链接器技巧,我对其他编译器/链接器不感兴趣。谢谢!

c gcc null linker non-nullable
1个回答
0
投票

如果指针最终计算结果为 NULL,有什么方法可以触发链接器错误吗?

假设您的意思是:如果程序可能在执行时尝试取消引用

NULL
指针,是否有办法使程序无法构建(在编译或链接时),答案是否定的。

检测程序是否可以取消引用

NULL
指针相当于停止问题,众所周知,这是不可判定的

© www.soinside.com 2019 - 2024. All rights reserved.