有谁知道是否有任何C编译器可以阻止您使用特定的库和函数?
例如,假设我想阻止对float.h的访问,并尝试编译具有“ #include”的程序。我希望编译失败,并显示某种消息,表明这是因为无法包含float.h。
或者,如果我想在math.h中阻止对sqrt()和pow()的访问,但在该库中包含所有其他函数,那么该程序的行应为“ double hold = pow(2.0,3.0);”。不会编译,并且会出现正在调用阻塞函数的情况。
我已经尝试过在网上搜索类似的内容,但我认为我不知道要搜索的正确术语,因为我似乎找不到与我实际寻找的内容有关的任何结果。
例如,使用gcc,您可以执行以下操作来防止某些情况:
float.h:
#error "You must not include me"
确保这些存根将覆盖您的系统库:
$ export CPATH=$PWD
然后,在此环境中编译尝试包含"float.h"
或<float.h>
在其中的c文件将失败。
当然,这是可以避免的。您只需要手动声明缺少的标头中声明的函数即可。
更好的选择可能是创建一个全局包含(-include
),在其中您#pragma GCC poison
应将所有不应在程序中任何地方使用的符号。
您也可以检查创建的目标文件,nm
其中包含您不想由c librard解析的未解析符号,如果找到此类符号,则停止构建。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句