非活动预处理器块是指什么意思,还有,为何是浅灰色显示呢?

zsdl00 2010-09-01 03:59:23
非活动预处理器块是指什么意思,还有,为何是浅灰色显示呢?

#ifndef _CONST_RETURN
#ifdef __cplusplus
#define _CONST_RETURN const
#define _CRT_CONST_CORRECT_OVERLOADS
#else
#define _CONST_RETURN
#endif
#endif


我不明白,上面的代码,在vc2008的编辑器中,除首尾两行代码,其他都是浅灰色显示,这是为什么?

#ifndef _CONST_RETURN
。。。这里的代码都是浅灰色的。
#endif

我不明白,这就是普通的预处理命令呀,为何会使中间的代码为灰色呢?
灰色表示什么,折叠后显示的是:非活动预处理器块

系统如何知道这些代码是非活动的呢?
...全文
2560 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwweet 2013-02-01
  • 打赏
  • 举报
回复 1
关于“怎么样取消 代码的 非活动预处理器块 属性,使代码变成一般的代码。”的解答 “项目\属性\配置属性\常规\字符集”,将字符集修改成“使用多字节字符集”,那就可以运行了
wp312304072 2012-10-26
  • 打赏
  • 举报
回复
怎么样取消 代码的 非活动预处理器块 属性,使代码变成一般的代码。
辰岡墨竹 2010-09-01
  • 打赏
  • 举报
回复
“项目\属性\配置属性\常规\字符集”,可以修改字符集定义。或者直接“配置属性-C/C++-命令行”,有_UNICODE参数的就是
zsdl00 2010-09-01
  • 打赏
  • 举报
回复
谢谢,可是在工程文件中,我如何找到它的定义呢?
您不是说:这个宏_UNICODE 是在工程文件中定义的吗?
chinacoding 2010-09-01
  • 打赏
  • 举报
回复 1
_UNICODE 是系统默认宏,他的定义是在编译其中配置的。
ide没有办法跳转到这个地方,因为没有文件中显示定义这个宏,所以有这个提示。
如果你把这个宏放到一个头文件中去定义,就可以跳转过去了。
纠结起来应该算是ide的提示不够友好。

简单的说如下:
ide下面的跳转是这样的逻辑,先找到该类型的定义文件,然后打开改文件,在定位到类型定义的行。
出现你这种情况,是因为ide找不到这个文件(.h/.c/.cpp),因为你这个宏_UNICODE 是在工程文件中定义的。再纠结起来应该还算是ide的提示不够友好。

ide应该说“无法打开定义该宏的文件,此宏可能在项目工程文件中定义。”
zsdl00 2010-09-01
  • 打赏
  • 举报
回复
以下是一段代码,
#ifdef _UNICODE 后面的代码,都是正常颜色,按理说 _UNICODE应该是已经定义了呀,
我是我右键,转到定义,确提示 _UNICODE 没有定义。
这是为什么呢?


/* For backwards compatibility */
#define _WConst_return _CONST_RETURN

#ifdef _UNICODE

#ifdef __cplusplus
} /* ... extern "C" */
#endif

/* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */

#include <wchar.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _WCTYPE_T_DEFINED
typedef unsigned short wint_t;
typedef unsigned short wctype_t;
#define _WCTYPE_T_DEFINED
#endif
ShinNakoruru 2010-09-01
  • 打赏
  • 举报
回复
#ifndef _CONST_RETURN
。。。这里的代码都是浅灰色的。
#endif

如果未定义_CONST_RETURN则编译以下代码块

灰色的就说明你的项目中已经定义了_CONST_RETURN,故以下代码不会被编译,所以是灰色的。

这有什么问题么?

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧