簡體   English   中英

ISO C90 / 99檢查是否存在特定於編譯器的功能

[英]ISO C90/99 Check if compiler specific function exists

因此,我正在編寫可移植的嵌入式ansi C代碼,試圖支持多個編譯器和硬件目標。 每個編譯器/硬件供應商都支持不同的math.h函數。 有些僅支持C90,有些僅支持C99的子集,有些僅支持完整的C99。

我試圖找到一種方法來檢查給定函數在預處理器中是否存在,以便可以使用自定義宏(如果不存在)。 一些供應商在math.h中具有外部函數,一些供應商使用#define重新映射到一些內部調用。 是否有一段代碼可以告訴您它是#defined還是extern函數? 我可以使用#ifdef進行定義,但是實際的函數調用呢?

通常的解決方案是查看由預處理器本身定義的宏,或者將其作為-D定義傳遞到構建過程中,這些宏標識正在運行的編譯器和平台,並利用它們以及對每種環境有哪些特殊幫助的知識需要配置您的代碼。

我想您可以編寫一系列測試.c文件,嘗試對其進行編譯,查看返回的錯誤代碼,並使用它們來設置適當的-D標志...但是我不認為這樣做會更清潔。

暫無
暫無

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

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