[英]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
)的選擇決定了使用哪個預處理器。
您還可以反轉枚舉中常量的聲明,因為默認情況下,枚舉的成員與從0開始的整數相關聯。
根據評論,我錯了。 看起來你必須重寫枚舉。 對不起:(
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.