簡體   English   中英

在靜態庫中使用宏進行函數聲明和定義對符號導出的影響

[英]effect of using macros for function declaration and definition on symbol export within a static library

有誰知道在構建靜態庫時大量使用c-macros定義和聲明函數是否會影響鏈接程序導出這些符號的能力?

我一直遇到這個問題,當我切換到常規函數聲明和定義(不使用宏)時,幾乎所有符號查找失敗都幾乎消失了。

這是在使用Xcode 5並針對iOS(arm + i386)的mac平台上發生的。

我打開/關閉哪個構建設置都沒有關系。 看起來真正有所不同的是宏的使用和符號導出文件的使用。

我問,因為我現在遇到了一大堆代碼,這些代碼使用幾個級別的宏進行函數定義和聲明,並且除非絕對必要,否則我不想更改它。

該代碼確實很復雜(但引人注目:)),最初是使用GNU make&siblings構建的。 因此,將其切換到基於XCode的版本並不是一件容易的事。 它與標頭包括一起玩把戲。

關於這一點,我將不勝感激:靜態庫的宏和符號導出。

謝謝!

宏會在編譯器啟動之前展開,並且鏈接器直到所有目標文件完成后才會顯示。 因此,要么您的宏沒有生成您認為的代碼,要么您發現了第一個實現時間轉換的宏。 編輯:或者我完全不了解要點,可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM