限制C中的库链接

限制C中的库链接,c,gcc,C,Gcc,如果我希望gcc编译器在包含stdlib.h或特定头时抛出错误,我应该使用什么标志?。我不想使用-nostlib标志,因为它不链接任何标准库。对于每个头文件,都有一个包含保护,所以我想您可以像这样检查它 #ifdef _STDLIB_H #error "You should not include stdlib.h" #endif 然后,您可以将相同的应用于其他标题。当然,这只适用于特定的c标准库。在本例中,我在中使用了stdlib.h中的include-guard。如果在检查后包含stdli

如果我希望gcc编译器在包含
stdlib.h
或特定头时抛出错误,我应该使用什么标志?。我不想使用
-nostlib
标志,因为它不链接任何标准库。

对于每个头文件,都有一个包含保护,所以我想您可以像这样检查它

#ifdef _STDLIB_H
#error "You should not include stdlib.h"
#endif
然后,您可以将相同的应用于其他标题。当然,这只适用于特定的
c
标准库。在本例中,我在中使用了
stdlib.h
中的include-guard。如果在检查后包含
stdlib.h
,则它将不起作用


另外,头文件不是库,它包含库中的定义和函数原型,如果您不想让程序链接到标准库,那么除了
gcc-nostlib

之外,您没有其他选择。对于每个头文件,都有一个包含保护,所以我想您可以尝试这样检查它

#ifdef _STDLIB_H
#error "You should not include stdlib.h"
#endif
然后,您可以将相同的应用于其他标题。当然,这只适用于特定的
c
标准库。在本例中,我在中使用了
stdlib.h
中的include-guard。如果在检查后包含
stdlib.h
,则它将不起作用


另外,头文件不是库,它包含库中的定义和函数原型,如果您不想让程序链接到标准库,那么除了
gcc-nostlib

之外,您没有其他选择。对于每个头文件,都有一个包含保护,所以我想您可以尝试这样检查它

#ifdef _STDLIB_H
#error "You should not include stdlib.h"
#endif
然后,您可以将相同的应用于其他标题。当然,这只适用于特定的
c
标准库。在本例中,我在中使用了
stdlib.h
中的include-guard。如果在检查后包含
stdlib.h
,则它将不起作用


另外,头文件不是库,它包含库中的定义和函数原型,如果您不想让程序链接到标准库,那么除了
gcc-nostlib

之外,您没有其他选择。对于每个头文件,都有一个包含保护,所以我想您可以尝试这样检查它

#ifdef _STDLIB_H
#error "You should not include stdlib.h"
#endif
然后,您可以将相同的应用于其他标题。当然,这只适用于特定的
c
标准库。在本例中,我在中使用了
stdlib.h
中的include-guard。如果在检查后包含
stdlib.h
,则它将不起作用



此外,头文件不是库,它包含库中的定义和函数原型,如果您不想让程序链接到标准库,那么除了
gcc-nostdlib

stdlib.h
不是库,它是头文件之外,您别无选择。你到底想干什么?真奇怪。你需要陈述你真正的问题。为了回答你的问题,我想
\ifdef#错误#endif
会有帮助。我猜您的编译机器与您正在运行的机器不同。这就是我们所说的交叉编译。但这并不像你想象的那样。隐藏真正的问题对你和我们都不好。也许问题比你想象的要大。把你的问题说清楚,否则没人能帮你。这个问题听起来像是XY问题:因为定义了宏
EXIT\u FAILURE
,遵循@hustmphrr的建议,你可以尝试
#ifdef EXIT\u FAILURE#error“stdlib包含在内”#endif
stdlib.h不是库,而是头文件。你到底想干什么?真奇怪。你需要陈述你真正的问题。为了回答你的问题,我想
\ifdef#错误#endif
会有帮助。我猜您的编译机器与您正在运行的机器不同。这就是我们所说的交叉编译。但这并不像你想象的那样。隐藏真正的问题对你和我们都不好。也许问题比你想象的要大。把你的问题说清楚,否则没人能帮你。这个问题听起来像是XY问题:因为定义了宏
EXIT\u FAILURE
,遵循@hustmphrr的建议,你可以尝试
#ifdef EXIT\u FAILURE#error“stdlib包含在内”#endif
stdlib.h不是库,而是头文件。你到底想干什么?真奇怪。你需要陈述你真正的问题。为了回答你的问题,我想
\ifdef#错误#endif
会有帮助。我猜您的编译机器与您正在运行的机器不同。这就是我们所说的交叉编译。但这并不像你想象的那样。隐藏真正的问题对你和我们都不好。也许问题比你想象的要大。把你的问题说清楚,否则没人能帮你。这个问题听起来像是XY问题:因为定义了宏
EXIT\u FAILURE
,遵循@hustmphrr的建议,你可以尝试
#ifdef EXIT\u FAILURE#error“stdlib包含在内”#endif
stdlib.h不是库,而是头文件。你到底想干什么?真奇怪。你需要陈述你真正的问题。为了回答你的问题,我想
\ifdef#错误#endif
会有帮助。我猜您的编译机器与您正在运行的机器不同。这就是我们所说的交叉编译。但这并不像你想象的那样。隐藏真正的问题对你和我们都不好。也许问题比你想象的要大。把你的问题说清楚,否则没人能帮你。这个问题听起来像是XY问题:因为定义了宏
EXIT\u FAILURE
,遵循@hustmphrr的建议,你可以尝试
#ifdef EXIT\u FAILURE#error“stdlib被包括在内”#endif
对这个答案投反对票很奇怪,这是一个很好的答案。。。另外,标准库中的函数不需要包含头文件来链接到共享对象,只要