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

ANSI C code for both Objective-C and C++ code?

本文关键字:代码 ANSI Objective-C      更新时间:2023-10-16

在我的项目中,有3种可能的文件类型:纯C/Objective-C,Pure C 或Objective-C 代码。

如何将.H文件中的函数用#define指令将功能分为部分,以使所有这些文件可用于此文件?由于重构问题,我不想将所有.m文件重命名为.mm。

我知道我可以在C中使用C .cpp文件使用以下代码写入.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

但是,如果我想使用NSStringlist<...>

添加功能怎么办

您可以在由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