c++ - GCC:检查是否编译为库或可执行文件

标签 c++ gcc

我有一些类实现将用作库。 但是,我想在该库中包含一个 main 函数,并使用一个简单的驱动程序来测试我的类。因此,函数 main 只有在我将编译目标定义为可执行文件时才能编译。

这可以通过一些宏或类似的方法来完成吗?

我不想创建一个新项目或 Makefile,只是一个简单的 #ifdef 包装 main 函数将是这项工作的完美选择。

最佳答案

您可以使用 GCC 的 -D 选项定义宏。例如,您可以定义一个带有选项 -D_RELEASE 的宏 _RELEASE 并按如下方式换行:

#ifdef _RELEASE
// Release main
int main()
{
    // ...
}

#else
// Another main
int main()
{
    // ...
}

#endif

您可以通过将 -D_RELEASE 添加到您的编译行来编译一个 main 或另一个:

gcc main.c -D_RELEASE [other flags] # compile with release main
gcc main.c [other flags] # compile with other main

注意

这是main 函数的示例,但当然它可以为库中的任何函数实现。

关于c++ - GCC:检查是否编译为库或可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34900034/

相关文章:

C++:不一致的 std::pow( type ) 定义

c++ - 如何使用 boost spirit 将字符串解析为元组 vector ?

c++ - gcc/clang 上的模板错误,但 MSVC 上没有

c++ - 让编译器在 Notepad++ 中工作

c - 为什么模运算返回意外值

c - 如何使堆栈在 osx 上可执行?

c++ - 无法使此代码在 MSVC 2015 和 GCC 7.3 之间交叉编译

c++ - 找到适合整数的最大斐波那契数的最快方法是什么?

c++ - 从 Win32 项目中的 *.bmp 文件加载 HBITMAP

c - m32 和 m64 编译器选项提供不同的输出