【发布时间】:2016-09-15 04:23:51
【问题描述】:
有谁知道是否有任何 C 编译器可以让您阻止使用特定的库和函数?
例如,假设我想阻止对 float.h 的访问,并尝试编译具有“#include”的程序。我希望编译失败并显示某种消息表明这是因为 float.h 无法包含。
或者,如果我想阻止对 math.h 中的 sqrt() 和 pow() 的访问,但在该库中包含所有其他函数,那么一个具有“double hold = pow(2.0, 3.0) 行的程序);"不会编译并且会认为正在调用阻塞的函数。
我曾尝试在线搜索类似的内容,但我认为我不知道要搜索的正确术语,因为我似乎找不到任何与我实际要查找的内容相关的结果。
【问题讨论】:
-
这种功能的用例是什么?您可以随时重新
#define被阻止的功能/类型。 -
如果您使用的是 GCC,
#pragma GCC poison可用于阻止特定功能。但它对整个标题没有帮助。 -
我正在尝试编写一个程序来教人们 C 语言。他们输入代码,它将代码传递给编译器并运行它,将输出通过管道传输到一个文件,然后由我的程序读取。我想确保他们不会通过阻止访问某些更危险的功能,并确保它们不能将输出重定向到我想要的其他地方。
-
@Quentin
#pragma GCC poison完全符合我的要求!谢谢昆汀! -
@PolkaPunk 你最好使用像 Ideone.com 这样的预制产品并为它找到一个 API。
标签: c compilation c-preprocessor