是否可以在链接时触发#warning?

时间:2017-03-21 07:38:28

标签: c gcc

我正在用C(gcc)编写一些模块来调用模块外的函数。出于测试目的,我实现了只打印其参数的虚函数。然后其他人将实现真正的功能。现在我将它们作为弱符号实现,以便在链接时可以通过“真实”函数覆盖它们。 当我的弱符号被链接时,有没有办法可以看到警告?(比如编译时的#warning)我想知道什么时候没有实现特定的功能而且虚拟的是连接的代替。

我已经知道了替代方案 - 在我的模块初始化期间传递一个函数指针结构,并在我的模块中使用函数指针,使用大量#ifdefs或修改构建过程只链接一个版本。

1 个答案:

答案 0 :(得分:0)

你可以使用一些#pragma message gcc指令:

/* dummy foo function is just for testing purpose, so is only defined in debug version. */
#ifdef _DEBUG

/* foo is your dummy function for testing */
int foo()
{
    #pragma message "Warning: using dummy version of foo function"
    return 0;
}
#endif