首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

.h资料中的疑问

2012-10-05 
.h文件中的疑问#ifndef _DEBUG_H#define _DEBUG_H#ifdef __cplusplusextern C {#endif本来是debug.h为什

.h文件中的疑问
#ifndef _DEBUG_H
#define _DEBUG_H

#ifdef __cplusplus
extern "C" {
#endif
本来是debug.h为什么搞那么多_呢?还有后面那个__cplusplus
是什么意思?

[解决办法]
加个_只是习惯而已
__cplusplus 这个是C++中预定义的宏,说明代码是C++代码,不是C代码
extern "C",意思是要{}里面的符号都是按照C风格导出,而不是像C++那样加很多修饰符,还有参数信息啥的
[解决办法]
这个文件是C编译,与c++的命名规规不一样,所以要进行处理,才能正常工作。
[解决办法]
.cpp在gcc编译时会有编译时的宏__cplusplus
[解决办法]
#ifndef _DEBUG_H
#define _DEBUG_H
#endif

这样处理,是防止debug头文件被多次引用。(若没有引用debug头文件,才去引用;若已经引用,则不能再次引用)。

另外,你整体的代码,少一个#endif:
#ifndef _DEBUG_H
#define _DEBUG_H

#ifdef __cplusplus
extern "C" {
#endif
 

[解决办法]
#ifndef _DEBUG_H
防止头文件被多次包含导致多次编译
#ifdef __cplusplus
检测当前编译这段代码的是C编译器还是C++编译器
extern "C" {
如果是C++编译器,则声明以下代码按照C编译器方式编译

以_开头是为了尽可能减少和用户自定义的标识符雷同的可能

热点排行