我想知道是否可以将C库作为一个单独的文件分发,其中所讨论的文件的不同部分取决于所使用的文件。这个问题的灵感来自
GenericList.inc
免费Pascal Wiki上的示例
here
(警告:没有HTTPS)和单文件C和C++库的列表
here
它不具有任何专用于C的单个文件库。有许多库在C++中仅使用C可编译API编写。
例如,一个非常简单的库有一个无用的函数
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
,我们可以将其合并为一个文件以便于分发。
这里的想法是
我是你的来源吗
当所讨论的文件是包含的文件的当前树状结构的“根”时为false,否则为true。
/* strawman.c */
int add(int x, int y);
#ifndef AM_I_BEING_SOURCED
int add(int x, int y)
{
return x + y;
}
#endif
有没有办法伪造/仿效
我是你的来源吗
例如,这不依赖于一个荒谬的黑客式行号算法吗?
有没有办法伪造/仿效
我是你的来源吗
那个
做
依靠一个荒谬的黑客?