我有一些类实现,它将作为Lib运行。
但是,我希望在该库中包含一个memory.py
函数,并使用一个简单的驱动程序来测试我的类。因此,只有在我将编译目标定义为可执行文件时,才能编译函数main
。
这可以通过一些宏或类似的方式来完成吗?
我不想创建一个新项目,也不想创建Makefile,只需要一个简单的main
包装主函数就可以完成这项工作。
答案 0 :(得分:2)
您可以使用GCC的-D
选项定义宏。例如,您可以使用选项_RELEASE
定义宏-D_RELEASE
并包装如下:
#ifdef _RELEASE
// Release main
int main()
{
// ...
}
#else
// Another main
int main()
{
// ...
}
#endif
您可以通过将-D_RELEASE
添加到编译行来编译主编号:
gcc main.c -D_RELEASE [other flags] # compile with release main
gcc main.c [other flags] # compile with other main
这是main
函数的示例,但当然可以为库中的任何函数实现。
答案 1 :(得分:0)
不,这不能由宏来完成。错误的编译阶段。 C和C ++都有3个相关步骤:Per Translation Unit,预处理器和编译器本身都可以运行。最后,TU由链接器链接在一起。
在预处理或编译单个TU时,您无法知道其他TU可能包含的内容,或者您将链接到哪些内容。实际上,makefile很可能以任何一种方式定义规则。例如。 file1.obj可能两者进入A.LIB和A.EXE。