因为以前增长了解析postgresQL消息的功能,为打印每一个消息的内容,在另一个protooutput.h的文件中增长了每种消息格式的inline打印函数。为了知道代码中每次采用log_debug宏打印出来的信息的location。因而修改了log_debug宏,增长打印__FILE__,__LINE__,__func__的功能。增长完成后代码的大体状况以下:函数
打印消息内容的protooutput.h文件中有下面的函数:post
log_debug修改后的代码以下:
debug
其中LOG_TRACE_RUN宏就是新增长的打印location的宏。定义以下:io
结果直接编译,却显示连接时提示没有定义_print_functionCallPK函数,可是把log_debug宏中新增长的LOG_TRACE_RUN宏去掉后,却可以顺利的连接完成。可是从上面的代码看彻底没有错误哈,为何连接不上呢?编译
后面想了想连接不上_print_functionCallPK函数,确定是编译protooutput.h文件的时候出现了问题,多半是inline致使的。因而就把print_functionCallPK函数从inline修改为普通函数,再次编译却成功连接了。function
这是为啥呢?有没有大神知道缘由,请赐教?import