想知道#ifdef,#define ,#endif的作用
时间:2008-05-09 19:06:53
来源:论坛整理 作者: 编辑:chinaitzhe
#define LANGUAGE LANGUAGEW
#define PLANGUAGE PLANGUAGEW
#else
#define LANGUAGE LANGUAGEA
#define PLANGUAGE PLANGUAGEA
#endif // _S_UNICODE
为什么每段程序的基本上开头都会有#ifdef #defind #endif这些 这样定义了有什么作用呢
还有
typedef struct {
HRESULT hRes;
WCHAR szStrings[512];
} SPCHERRORW, FAR * PSPCHERRORW; typedef是类型重定义 但是我不明白这段话的定义的是什么 HRESULT WCHAR这两个类型
重来没见过呀
谢谢 各位大哥大姐
网友回复:头文件中的#ifdef #define #endif
作用1:防止重编译,功能与#pragma once一致
作用2:条件开关,比如上面的程序中分unicode和非unicode版本的,那只要定义一个宏就可以搞定不同版本了
其他作用:就是简单的宏替换或者达到开关的作用
typedef这里就是将这个struct用一个类型SPCHERRORW就可以替代
struct {
HRESULT hRes;
WCHAR szStrings[512];
}了
而用PSPCHERRORW就可以替代
struct {
HRESULT hRes;
WCHAR szStrings[512];
}FAR*了
网友回复:谢谢 你们怎么这么厉害呀 这些知识 都是从哪学的 哎 我感觉没地方查询 呵呵
网友回复:楼上说的很好,
主要作用就是防止重定义。
第二个问题,关于那些没见过的类型,教给你个小窍门,
把光标定位在那个类型上,如HRESULT ,然后右键单击,
在右键菜单中选择“go to definition of ***”
就会跳到这个类型定义的地方。你就知道它是干什么用的了,
有时要跳好几层。
网友回复: 还有HRESULT WCHAR这两个类型什么意思? 去哪去查这些呢?
网友回复:
直接查msdn
敲WCHAR进去搜!
网友回复:有没有看到我的回复?答案就在其中,
另外还可以用MSDN,或在网上搜
网友回复:我点了 go to definition of 但是为什么没有反应呢 ? 太希奇了
网友回复:MSDN 有介绍!
网友回复:没反应?这是不可能的
有的时候是有个提示框,要你先编译,你点OK就行
网友回复:根本作用还是防止重复包含
重复定义只是重复包含的一种结果
网友回复:
就是这个样子了,解释的很具体,
网友回复:还可以方便调试。
比如
#ifdef DEBUG
printf("..")
#endif
当你调试完之后,可以取消对DEBUG的定义,这样你发布的软件就不会又打印信息了。
网友回复:不知道 MSDN!
网友回复:怎么还没有结贴呀?
网友回复:#define LANGUAGE LANGUAGEW
#define PLANGUAGE PLANGUAGEW
#else
#define LANGUAGE LANGUAGEA
#define PLANGUAGE PLANGUAGEA
#endif // _S_UNICODE
这些是防止重复包含定义的
typedef struct {
HRESULT hRes;
WCHAR szStrings[512];
} SPCHERRORW, FAR * PSPCHERRORW;
这个是给结构体起个名。
HRESULT,WCHAR,是类型,在MSDN中能查到
HRESULT是LONG!
WCHAR似乎是unsigned short
网友回复:哦 好的 我去查 谢谢 高手们 呵呵
关键字:想知道,ifdef,define,endif,作用,
上一篇:析构函数里delete的问题
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面