我想知道是否可以将C库分发为单个文件,其中根据所使用的文件来表达所讨论文件的不同部分。这个问题的灵感来自免费Pascal Wiki here上的GenericList.inc
示例(警告:否https)以及单个文件C和C ++库here的列表,该列表似乎没有任何单个专门用于C的文件库。尽管有很多库都是使用C ++兼容的API用C ++编写的。
例如,一个具有一个无用函数add
的非常简单的库可能看起来像这样:
/* foo.h */
int add(int x, int y);
和其他文件
/* foo.c */
#include "foo.h"
int add(int x, int y)
{
return x + y;
}
如果有一个神奇的预处理器变量AM_I_BEING_SOURCED
,我们可以将其合并为一个文件,以方便分发。
这里的想法是,当所讨论的文件是所包含文件的当前树状结构的“根”时,AM_I_BEING_SOURCED
为假,否则为true。
/* strawman.c */
int add(int x, int y);
#ifndef AM_I_BEING_SOURCED
int add(int x, int y)
{
return x + y;
}
#endif
例如,有没有一种方法可以伪造/模拟AM_I_BEING_SOURCED
,而这种伪造/伪造AM_I_BEING_SOURCED
并不像行号算术那样依赖荒谬的hack?
是否有一种方法可以伪造/模仿{em>确实依赖于荒谬的骇客行为的{{1}}?