Objective-C和C ++代码的ANSI C代码?

时间:2014-01-27 13:22:39

标签: c++ objective-c c split c-preprocessor

在我的项目中有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

但如果我想使用NSStringlist<...>添加功能,该怎么办。

1 个答案:

答案 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