当用 C++ 编译时,__cplusplus 被定义,代码变为 extern "C" int strcmp(const char*, const char*); (C++ 里必须提供 extern "C" 以正确链接 C 函数) 当用 C 编译时,__cplusplus 没有定义,代码变为 int strcmp(const char*, const char*); (C 并不支持 extern "C" ,如果有 extern "C" 会出错) 这样,这段代码即可以作为 C 编译,又可以作为 C++ 编译。 这种代码一般出现在头文件里,以便这个头文件即可以被 C 文件包含,也可以被 C++ 文件包含。
当用 C++ 编译时,
__cplusplus
被定义,代码变为(C++ 里必须提供
extern "C"
以正确链接 C 函数)当用 C 编译时,
__cplusplus
没有定义,代码变为(C 并不支持
extern "C"
,如果有extern "C"
会出错)这样,这段代码即可以作为 C 编译,又可以作为 C++ 编译。
这种代码一般出现在头文件里,以便这个头文件即可以被 C 文件包含,也可以被 C++ 文件包含。