簡體   English   中英

混合Objective-C和C ++代碼

[英]Mixing Objective-C and C++ code

我有一個Objective-C / C ++應用程序,它使用C ++庫提供的功能。

其中一個C ++類包含這樣的枚舉:

class TheClass
{
public:
[...]

enum TheEnum
{
    YES,
    NO,
};

[...]
};

包括(使用#import -if that matters-)帶有Objective-C / C ++源文件(* .mm)中的上述類聲明的頭文件將使編譯失敗,因為預處理器將用術語“替換”為“YES” (BOOL)1“(”(BOOL)0“同樣為”NO“)。

有沒有辦法解決這個問題而不重命名枚舉的值?

YES和NO是 Objective-C 中預定義的常量 ,在objc.h頭文件中聲明。

您應該能夠阻止預處理器擴展“是”和“否”宏。 這可以通過本地#undef fing來完成。

但從技術上講,如果您使用語言關鍵字作為標識符,則可能會遇到麻煩。 你不會寫一個包含名為MAX_PATH的成員的類,對嗎?

#import重要 - Objective-C ++源文件中的C ++頭文件應包含在 #include 我認為,盡管不是100%肯定,但是include指令( #include vs #import )的選擇決定了使用哪個預處理器。

\n

您還可以反轉枚舉中常量的聲明,因為默認情況下,枚舉的成員與從0開始的整數相關聯。

根據評論,我錯了。 看起來你必須重寫枚舉。 對不起:(

暫無
暫無

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

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