因爲以前增長了解析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