我对Objective C的经验相当少,因为我开始使用Swift学习iOS开发,我需要使用一个较旧的ObjC库。
我的netsdk. h库(文件超过50k行)
#ifndef DHNETSDK_H
#define DHNETSDK_H
#if (defined(WIN32) || defined(_WIN32) || defined(_WIN64))
...
#else //non-windows
#define CLIENT_NET_API extern "C"
#define CALL_METHOD
#define CALLBACK
...
字符串
基本上在阅读了一些与此相关的问题后,我认为下一行的extern "C"
有问题
...
#define CLIENT_NET_API extern "C"
...
型
由于这个原因,我在许多使用CLIENT_NET_API的行中得到错误,如
expected identifier or '('
Expanded from macro 'CLIENT_NET_API'
型
我的第一次尝试是将#define CLIENT_NET_API extern "C"
Package 到
#ifdef __cplusplus
extern "C" {
#endif
#define CLIENT_NET_API
#ifdef __cplusplus
}
#endif
型
但是我在使用CLIENT_NET_API的所有行上都得到错误"C does not support default arguments"
,例如
CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartBackUpCase(LLONG lLoginID, const NET_IN_START_CASE_BACK_UP* pstInParam, NET_OUT_START_CASE_BACK_UP *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT);
CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopBackUpCase(LLONG lLoginID, const NET_IN_STOP_CASE_BACK_UP* pstInParam, NET_OUT_STOP_CASE_BACK_UP *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT);
型
我认为它应该以其他方式 Package ,但我找不到在同一行中包含#define
和extern
关键字的示例
2条答案
按热度按时间sqserrrh1#
在这种情况下:
define CLIENT_NET_API extern“C”
假设
CLIENT_NET_API
是extern "C"
因此,在您的示例中,只需定义为
empty existed preprocessor variable
字符串
wljmcqd82#
我使用file.mm来#import“netsdk. h”而不是file. m。问题解决了