[英]ANSI C code for both Objective-C and C++ code?
在我的項目中,有3種可能的文件類型:純C / Objective-C,純C ++或Objective-C ++代碼。
如何使用#define
指令將.h文件中的函數划分為多個部分,以使該文件可用於所有這些文件? 由於重構問題,我不想將所有.m文件重命名為.mm。
我知道我可以使用以下代碼在使用C ++ .cpp文件的C中編寫.h文件:
#ifndef Chadstone_CCCWrapper_h
#define Chadstone_CCCWrapper_h
#ifdef __cplusplus
#include <string.h>
extern "C"
{
#endif
void minMaxCoordinates(char *c, float *minX, float *minY, float *maxX, float *maxY);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif
但是如果我想使用NSString
或list<...>
添加函數,該怎么辦list<...>
您可以在Xcode生成的標准pch文件中找到它:
#ifdef __OBJC__
#endif
另外,在聲明函數時需要使用CF_EXPORT
宏以防止鏈接錯誤。
例:
#ifndef SOME_H_FILE
#define SOME_H_FILE
#ifdef __OBJC__
@interface SomeObjClass: NSObject
@end
CF_EXPORT void SomeFunctionWithNSString(NSString* str);
#endif
#ifdef __cplusplus
class SomeCPlusPlustClass
{
};
CF_EXPORT void someFunctionWithList(const list<int>& intList);
#ifdef __OBJ__
CF_EXPORT void someComplicatedFunction(NSString* str, const list<int>& intList);
#endif
#endif
CF_EXPORT void someFunction();
typedef struct _SomeStruct
{
} SomeStruct;
#endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.