关于FOUNDATION_EXTERN、extern、FOUNDATION_EXPORT、extern "C"的区别
2016-07-06 10:23
579 查看
大家都知道Xcode的编译器是能够识别C++语言编程代码的,所以在编程中也是要考虑到C++的
首先直接上代码看一下几种宏的定义
由以上定义可以看出 FOUNDATION_EXTERN 是可以兼容C++的extern的宏。同样也可以推测出 extern "C" 也就是用来兼容C++里面的extetrn 的。
以上的定义看出
FOUNDATION_EXPORT
FOUNDATION_IMPORT
这两个是用来兼容win32应用程序的,当然这个宏我们在iOS编程中一般是很少用到的
FOUNDATION_EXPORT
FOUNDATION_IMPORT
为什么要定义的两个呢,可以看出来还是为了兼容C++的编程,因为在C++的编程中是存在两种定义的
__declspec(dllexport)
__declspec(dllimport)
至于两者的区别可以参考
http://www.cnblogs.com/ylhome/archive/2010/07/10/1774770.html
http://blog.chinaunix.net/uid-25958655-id-4193134.html
总结:
综上可以看出,如果项目中涉及到使用C++语言的编程的话则最好使用
FOUNDATION_EXPORT
FOUNDATION_IMPORT
否则 使用
FOUNDATION_EXTERN 这个就可以了
当然使用extern 也是没有问题的,就看大家的需求了
另外这是stackoverflow 上关于话题
首先直接上代码看一下几种宏的定义
#if defined(__cplusplus) #define FOUNDATION_EXTERN extern "C" #else #define FOUNDATION_EXTERN extern #endif
由以上定义可以看出 FOUNDATION_EXTERN 是可以兼容C++的extern的宏。同样也可以推测出 extern "C" 也就是用来兼容C++里面的extetrn 的。
#if TARGET_OS_WIN32 #if defined(NSBUILDINGFOUNDATION) #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllexport) #else #define FOUNDATION_EXPORT FOUNDATION_EXTERN __declspec(dllimport) #endif #define FOUNDATION_IMPORT FOUNDATION_EXTERN __declspec(dllimport) #else #define FOUNDATION_EXPORT FOUNDATION_EXTERN #define FOUNDATION_IMPORT FOUNDATION_EXTERN #endif
以上的定义看出
FOUNDATION_EXPORT
FOUNDATION_IMPORT
这两个是用来兼容win32应用程序的,当然这个宏我们在iOS编程中一般是很少用到的
FOUNDATION_EXPORT
FOUNDATION_IMPORT
为什么要定义的两个呢,可以看出来还是为了兼容C++的编程,因为在C++的编程中是存在两种定义的
__declspec(dllexport)
__declspec(dllimport)
至于两者的区别可以参考
http://www.cnblogs.com/ylhome/archive/2010/07/10/1774770.html
http://blog.chinaunix.net/uid-25958655-id-4193134.html
总结:
综上可以看出,如果项目中涉及到使用C++语言的编程的话则最好使用
FOUNDATION_EXPORT
FOUNDATION_IMPORT
否则 使用
FOUNDATION_EXTERN 这个就可以了
当然使用extern 也是没有问题的,就看大家的需求了
另外这是stackoverflow 上关于话题
“FOUNDATION_EXPORT”
vs “extern” 的回答
相关文章推荐
- C++中的extern “C”用法详解
- C++中extern "C"的用法
- 实例详解C/C++中extern关键字
- 浅谈C/C++中的static与extern关键字的使用详解
- C语言基础知识点解析(extern,static,typedef,const)
- 深入理解C语言 static、extern与指针函数
- C/C++中extern "C" 的作用分析
- C++中的extern声明变量详解
- extern "C"的用法解析
- 在C++程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- extern "C"
- C语言中extern的用法
- VC++动态链接库(DLL)编程深入浅出(四) 出处:PConline
- c语言的一些回顾------关键字之存储类别描述符
- jni 中的 extern "C" 分析
- c++中extern关键字详解 知识补充笔记
- c++中的 extern "C"
- extern 的用法
- C/C++ 解析“extern”
- C++学习小记(使用定义在其他.cpp文件中的变量或函数)