刪除命令我上定義一個函數時,有時會使用尋找預處理命令代碼
static inline void myfunc(...)
一個C庫工作。
現在我嘗試將此端口移植到不支持「靜態內聯」的舊C編譯器。這是密件抄送 - 布魯斯的C編譯器。
我可以在替代
static inline void
與
void
在包括這個頭文件的所有程序
頭文件使用一個命令?
刪除命令我上定義一個函數時,有時會使用尋找預處理命令代碼
static inline void myfunc(...)
一個C庫工作。
現在我嘗試將此端口移植到不支持「靜態內聯」的舊C編譯器。這是密件抄送 - 布魯斯的C編譯器。
我可以在替代
static inline void
與
void
在包括這個頭文件的所有程序
頭文件使用一個命令?
當您必須針對不支持某些功能的編譯器時,通常在您的代碼中使用宏而不是試圖用宏修改您的代碼。
在這種情況下,你可以在編譯器相關的方式定義STATIC_INLINE
宏,並使用它像這樣:
#ifdef BCC_COMPILER
#define STATIC_INLINE
#else
#define STATIC_INLINE static inline
#endif
...
STATIC_INLINE void myfunc(...)
這會起作用,但我已經在代碼中有很多ifdef了。我希望用一個#define命令或類似的命令在一個地方定義它會更短。 – Georg
我現在明白了,是的,你可以把這段代碼放到頭文件中。是否有可能讓預處理器用空字符串替換「靜態內聯」?然後我不必更改每個程序代碼。 – Georg
@Georg不幸的是,預處理器可以替代一個令牌,而不是一對彼此相鄰的令牌。這就是爲什麼我見過的許多庫使用這個技巧,儘管它使得其餘的代碼不易讀。 – dasblinkenlight
我想你可以添加一個void的空定義:#define void。 –
您確定要重新定義'void'關鍵字而不是'inline'關鍵字嗎?另外請查找並閱讀*條件編譯*。 –
對不起,這是一個錯字 - 我想用「void」替換「static inline void」 – Georg