C_C 指令#undef,#ifdef,#ifndef,#if的用法计算机二级考试

文章作者 100test 发表时间 2009:07:25 10:37:58
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  2009年下半年全国计算机二级考试时间是2009年9月19日至23日。2009年下半年全国计算机二级考试报名时间会在考前两个月开始报名!更多优质资料尽在百考试题论坛 百考试题在线题库

  #undef
  #undef 是在后面取消以前定义的宏定义
  该指令的形式为
  #undef 标识符
  其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。
  一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。
  在此程序中,我们将取消在先前程序中对预处理器的定义。
  源代码:
  #define TRACE(x)
  #if DBG
  #undef TRACE
  #define TRACE(x) g_TraceCallback x
  #else
  #ifndef TRACE
  #define TRACE(x)
  #endif
  #endif
  解析:
  #define TRACE(x)
  #if DBG //成立的话跑这支
  #undef TRACE //释放之前定义的 #define TRACE ,防止重复定义
  #define TRACE(x) g_TraceCallback x
  #else // DBG 不成立 跑这支
  #ifndef TRACE //当TRACE 没有被定义
  #define TRACE(x) //宏定义
  #endif
  #endif// DBG
  #ifdef,#ifndef使用
  条件编译命令最常见的形式为:
  #ifdef 标识符
  程序段1
  #else
  程序段2
  #endif
  它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
  其中#else部分也可以没有,即:
  #ifdef
  程序段1
  #denif
  这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不同的计算机又有一定的差异。例如,当程式跑到else,如果TRACE没被定义,则下一句再定义
  源代码:
  #define TRACE(x)
  #if DBG
  #undef TRACE
  #define TRACE(x) g_TraceCallback x
  #else
  #ifndef TRACE
  #define TRACE(x)
  #endif
  #endif
  解析:
  #define TRACE(x)
  #if DBG
  #undef TRACE
  #define TRACE(x) g_TraceCallback x
  #else
  #ifndef TRACE //如果之前没定义,则跑下边定义------该例前边有#define TRACE(x) ,则后边的定义自动失效因此不会因为重复定义而出错
  #define TRACE(x) //定义
  #endif
  #endif
  我们有时也采用下面的形式:
  #ifndef 标识符
  程序段1
  #else
  程序段2
  #endif
  只是第一行与第一种形式不同:将“ifdef”改为“ifndef”。它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2。这种形式与第一种形式的作用相反。
  以上两种形式用法差不多,根据需要任选一种,视方便而定。
  还有一种形式,就是#if后面的是一个表达式,而不是一个简单的标识符:
  #if 表达式
  程序段1
  #else
  程序段2
  #endif
  当表达式成立,则跑程序段1,否则跑程序段2
  注意:
  除#undef释放之前的宏定义可单独使用之外,
  #ifdef,#if,#ifndef均要与#endif配对
  如:
  #if...#else...#endif
  #ifdef...#endif
  #ifndef...#endif

  2009年9月全国计算机等级考试时间及科目预告

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  全国计算机等级考试历年真题及答案

  2009年上半年全国计算机等级考试试题及答案<./p



相关文章


C语言生成随机数的函数、延时函数计算机二级考试
计算机二级c_C 中随机数的设置计算机二级考试
关键数据结构之数据流向计算机二级考试
0delete释放空间时出错的原因计算机二级考试
C_C 指令#undef,#ifdef,#ifndef,#if的用法计算机二级考试
计算机二级C技巧:c语言中的volatile关键字计算机二级考试
重载CView::OnDraw()文档显示计算机二级考试
计算机二级C技巧:加密_弄乱C源代码计算机二级考试
计算机二级C技巧:VC自动配置数据源计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛