找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2772|回复: 4

[通用编程] 问个程序

[复制链接]
发表于 2007-8-17 16:09:12 | 显示全部楼层 |阅读模式
#include<stdio.h>
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
void main()
{
  int a=10,b=20;
  #ifdef MAX
    printf("\40:the larger one is %d\n",MAXIMUM(a,b));
  #else
    printf("\40:the lower one is %d\n",MINIMUM(a,b));
  #endif
  #ifndef MIN
    printf("\40:the lower one is %d\n",MINIMUM(a,b));
  #else
    printf("\40:the larger one is %d\n",MAXIMUM(a,b));
  #endif
  #undef MAX
  #ifdef MAX
    printf("\40:the larger one is %d\n",MAXIMUM(a,b));
  #else
    printf("\40:the lower one is %d\n",MINIMUM(a,b));
  #endif
  #define MIN
  #ifndef MIN
    printf("\40:the lower one is %d\n",MINIMUM(a,b));
  #else
    printf("\40:the larger one is %d\n",MAXIMUM(a,b));
  #endif
}
里面的 #ifdef MAX    #else    #endif
  #ifndef MIN     #endif
  #undef MAX
  #ifdef MAX    #endif
  #define MIN
  #ifndef MIN
[s:6][s:6]这些到底是什么啊......完全没看懂[s:8]
发表于 2007-8-17 16:52:55 | 显示全部楼层
都是预处理指示符,
我觉得可以理解为控制编译器编译行为的语言,会在编译时执行。
发表于 2007-8-17 19:00:34 | 显示全部楼层
解說一下吧,所有#以先的指令也是Pre-compile command
顧名思義便是翻譯源碼前對源碼下指令
define 解 用某一物事取代另一物
#define MINIMUM(x,y) (x>y)?y:x
那以下所有的MINIMUM(x,y),翻譯時會被(x>y)?y:x取代
這個也稱為巨集(Macro)的功能
如果#define 後只有一項,便代表宣告一個項目,而這個項目只會在編譯程序中使用
#ifdef XXX 到#endif中的代碼是當XXX曾被#define時便會被編譯
比如
#ifdef MAX
    printf("\\40:the larger one is %d\\n",MAXIMUM(a,b));
  #else
    printf("\\40:the lower one is %d\\n",MINIMUM(a,b));
  #endif
由於#define MAX在這之前出現過,所以Compiler會compile
    printf("\\40:the larger one is %d\\n",MAXIMUM(a,b));
#ifndef就是If Not DEFine
也就是不曾#define過的意思
#undef XXX就是把曾經#define過的代號清除,彷似從來也沒有#define過一般

某想這是最易明白的解說
发表于 2007-8-17 21:53:16 | 显示全部楼层
在GCC中可以用D参数...来指定相关的预处理命令值
gcc -d MAX...............就可以直接调用第一个MAX定义了....
 楼主| 发表于 2007-8-18 10:34:45 | 显示全部楼层
[s:1] 明白了,谢谢,没想到原来C语言我还这么多东西没接触过.............. [s:5]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 18:29 , Processed in 0.010179 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表