用C条件编译,如何判断某个函数是否存在?
如题,我想用条件编译判断某个函数是否存在,如果有这个函数就可以编译链接它;如果不存在,就跳过它。试试弱连接 __weak ABC()
先用__weak 定义你的函数,函数体为空。
当你另外定义函数时,编译器会使用你定义的函数。若未定义,则使用__weak定义的函数,然而__weak定义的函数又为空。相当于你调用一个空函数,此时链接器是不会链接此空函数的。 函数名是在编译后才有的,预编译怎么可能取得到,用WEAK关键字重载函数吧 用extern __weak申明函数就行,编译器不会报错 lingdianhao 发表于 2015-12-24 15:59
试试弱连接 __weak ABC()
先用__weak 定义你的函数,函数体为空。
当你另外定义函数时,编译器会使用你定义 ...
谢谢你的帮助,根据你的建议,上网查资料,我是按照如下方法使用的,但是提示AppInit重复定义,编译不通过。
//------------------main.c-------------------------------------------
void __attribute__((weak)) AppInit (void);
void main(void)
{
AppInit ();
}
void __attribute__((weak)) AppInit (void)
{
}
//-----------------App.c--------------------------------------------------------------------------------
void AppInit (void)
{
.........
}
again 发表于 2015-12-24 16:28
用extern __weak申明函数就行,编译器不会报错
我用的CSS 6.1 貌似weak要写在函数的最前面 刚才换个编译器试了一下,这个用法和编译器有关系。 试试
//------------------main.c-------------------------------------------
extern void AppInit(void) __attribute__((weak));
void main(void)
{
AppInit ();
}
页:
[1]