簡體   English   中英

適用於Objective-C和C ++代碼的ANSI C代碼?

[英]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

但是如果我想使用NSStringlist<...>添加函數,該怎么辦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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM