簡體   English   中英

在標題中使用 ifdef linux 等是否有意義?

[英]Does it make sense to use ifdef linux etc in header?

我讀了一些關於使用#ifdef #elif等宏來為各種平台提供實現的文章,幾乎每個人都說如果可能的話應該避免它,因為它很難維護。 但是我目前正在考慮它在頭文件中的用法如下:

#ifdef __linux__
    typedef struct my_linux_struct my_struct 
#elif __APPLE__
    typedef struct my_macos_struct my_struct 
#else
    #error Platform not supported
#endif

盡管服務於相同的目的, struct my_linux_structstruct my_macos_struct是完全不同的。

因此,對於定義了平台結構( struct my_linux_structstruct my_macos_struct )的每個平台,我都有一個專用的c文件。

我從以不同方式命名結構的好處是避免實現中的名稱沖突。

像這樣編寫條件宏是一種常見的做法嗎? 或者我們應該盡可能避免寫這樣的東西。

像這樣編寫條件宏是一種常見的做法嗎? 或者我們應該盡可能避免寫這樣的東西。

介於兩者之間。

最好將差異放在 .c 文件中,但不是“盡可能”避免的東西。

將特定於平台的代碼保留在 .h 文件之外更好,但不是法律

暫無
暫無

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

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