在我的项目中有3种可能的文件类型:纯C / Objective-C,纯C ++或Objective-C ++代码。
如何将带有#define
指令的.h文件中的函数划分为多个部分,以使该文件可用于所有这些文件?我不想将所有.m文件重命名为.mm,因为重构有问题。
我知道我可以在C中编写.h文件,它使用以下代码使用C ++ .cpp文件:
#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<...>
添加功能,该怎么办。
答案 0 :(得分:3)
您可以在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