#undef exit

读了一下,好像就是说,如果签名有#define exit,那么后面#ifdef X 就是真了。

#undef X的意思是,取消x的定义。此后,就不认识X了。x的有效范围在#define X 到#undef X之间。

 

 

==============

http://topic.csdn.net/u/20070906/22/d046d397-ac20-4cd2-8cea-2d009cc9f4d6.html

 

如果你想定义这个宏那就#define   X 
如果你不想让你已经#define   X的宏在其他其他地方由于引入了这个包含宏的.h文件而引起一些编译问题,那你就#undef   X掉,就这么简单。 
举个简单的例子。 
有1.c,11.h,12.h三个文件 
其中在11.h中定义了#define   X   extern 
x   int   a; 
而在12.h中你又定义了#define   X   int 
x   b; 
而在1.c中同时包含了这2个头文件,那就会引起一些问题,此时你必须把其中一个或者这两个都#undef掉来确保宏的正常。

 

 

这样吧 下面举一个例子
#define PF 100
使用PF//这个范围PF有效,

#undef
PF在这里就无效了,就不起作用了

 

http://www.kaifa6.com/v/CJingDianJaoCheng/%E7%AC%AC%E4%B9%9D%E7%AB%A0%20%E9%A2%84%E5%A4%84%E7%90%86/c93_11.htm

#ifdef #else #endif

  • #ifdef 命令条件依赖于编译器认为这个标识符是否已经预定义过这个事实。
  • #ifdef 命令控制一组程序行在条件满足的情况下被编译; #else 控制另一组程序行在条件不满足的情况下被编译。

例子

#ifdef mavis
#include "horse.h"
#define stable 5
#else
#include "ccow.h"
#define stable 15
#endif

解释
#ifdef 语句说明如果紧接的标识符 (mavis) 已经被预定义, 那么所有一直到 #else的语句都要被编译(如果没有 #else 部分, 则所有一直到 #endif 的语句都要被编译); 如果有 #else, 那么从 #else 到 #endif 的语句在标识符未被定义过的条件下都要被编译。

你是否发现这样的结构很象 IF_ELSE。

#ifndef #else #endif

#ifndef 和 #if 语句也能与 #else 及 #endif 一起使用。当紧接的标识符未被预定义时, #ifndef 为真。它与 #ifdef 正好相反。

#ifdef tt
  语句1  
#else    
  语句2  
#endif  
== #ifndef tt
  语句2  
#else    
  语句1  
#endif  

#if #else #endif

例子

#if machine==1 /* PDP-11 */
printf("We are using PDP-11/n");
#define INT_SIZE 16
#else
#if machine==2 /* VAX-11 */
printf("We are using VAX-11/n");
#define INT_SIZE 32
... ... 
#endif /*选择机器*/
#endif

#undef

#undef 与 #define 作用相反。

例如有如下语句
#define A 1
#define B 2
#define C 3
#undef B

  在 #undef B 前 在 #undef B 后
#ifdef A T T
#ifdef B T F
#ifdef C T T

怎样使#ifdef语句的结果为TRUE呢? 
有两种方法:

  1. 在 #ifdef 语句之前, 你可以用宏把标识符定义定义为一个任何数字或其它。
    ---#define IBM_PC 1
  2. 或只是简单地定义它。---#define IBM_PC

关闭

你可能感兴趣的:(c,IBM,编译器)