【求助】关键词: 预处理命令 ,#undef,用法

houmin0036 2013-01-04 06:01:21
我这有两个程序 可执行同样的功能
程序1:
#include <stdio.h>
int main( )
{
#define MAX 200
printf("MAX= %d\n",MAX);
#undef MAX
#define MAX 300
printf("MAX= %d\n",MAX);
}

程序2:
#include <stdio.h>
int main( )
{
#define MAX 200
printf("MAX= %d\n",MAX);

#define MAX 500
printf("MAX= %d\n",MAX);
}


那这样的话 #undef 的使用价值不就没有意义了吗?

那么 #undef 在什么地方适用?

...全文
377 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
houmin00362 2013-03-28
  • 打赏
  • 举报
回复
这不是现在思考的东西
c__development 2013-01-08
  • 打赏
  • 举报
回复
楼主 我感觉楼上说的 已经够详细了 楼上的回答就是你要问的,除非你自己的表述存在问题
lee_鹿游原 2013-01-08
  • 打赏
  • 举报
回复
引用 17 楼 houmin0036 的回复:
引用 2 楼 lile1234_show 的回复:C/C++ code?1234#define MAX 50#include "common.h"#undef MAX只有在common.h里,MAX才有效我看不懂
弄了半天,你看不懂... 自己写写不就知道了。。用眼看就能会,还写个蛋代码。 新建一个common.h ,在找一个.h 写入 #define MAX 50 #include "common.h" #undef MAX 这样说明,只有在common.H里才能用 MAX。其他都是未定义
houmin0036 2013-01-08
  • 打赏
  • 举报
回复
引用 2 楼 lile1234_show 的回复:
C/C++ code?1234#define MAX 50#include "common.h"#undef MAX只有在common.h里,MAX才有效
我看不懂
houmin0036 2013-01-08
  • 打赏
  • 举报
回复
引用 13 楼 ForestDB 的回复:
较新的C标准是可以允许随时定义新变量。 C/C++ code?12345678910111213# include <stdio.h> int main(){# define MAX 200 printf("MAX = %d\n", MAX); # undef MAX int MAX = 0; printf("MAX = %d\n", MAX); ……
你是从哪里知道"较新的C标准"这类信息的? 可以告诉我吗 我想了解C语言发展最新动态.
lee_鹿游原 2013-01-08
  • 打赏
  • 举报
回复
引用 14 楼 houmin0036 的回复:
引用 12 楼 ForestDB 的回复:C需要所有的声明在语句之前,很容易如下修正: C/C++ code?1234567891011121314# include <stdio.h> int main(){# define MAX 100 int a = MAX;# undef MAX int MAX = 0; printf("a is %d\n……
见 #2
houmin0036 2013-01-08
  • 打赏
  • 举报
回复
引用 12 楼 ForestDB 的回复:
C需要所有的声明在语句之前,很容易如下修正: C/C++ code?1234567891011121314# include <stdio.h> int main(){# define MAX 100 int a = MAX;# undef MAX int MAX = 0; printf("a is %d\n", a); printf("MAX……
# include <stdio.h> int main() { # define MAX 100 int a = MAX; # undef MAX int MAX = 0; printf("a is %d\n", a); printf("MAX is %d\n", MAX); return 0; } 将此程序改成 # include <stdio.h> int main() { # define MAX 100 int a = MAX; # define MAX 0 printf("a is %d\n", a); printf("MAX is %d\n", MAX); return 0; } 也可以执行同样结果 那么#undef 的存在不就在此没有价值了吗? 那么在什么情况下#undef的价值是不可替代的? 这是我想问的. 谢谢
houmin0036 2013-01-08
  • 打赏
  • 举报
回复
引用 18 楼 lile1234_show 的回复:
引用 17 楼 houmin0036 的回复:引用 2 楼 lile1234_show 的回复:C/C++ code?1234#define MAX 50#include "common.h"#undef MAX只有在common.h里,MAX才有效我看不懂 弄了半天,你看不懂... 自己写写不就知道了。。用眼看就能会,还写个蛋代码。 新建一个common.h ……
我是新手 才学到预处理命令。你说的common.H这个我从没使用过 也没在书上(已学到的)见过. 我想在已学到知识范畴中解决我的问题.
ForestDB 2013-01-06
  • 打赏
  • 举报
回复
较新的C标准是可以允许随时定义新变量。

# include <stdio.h>

int main()
{
# define MAX 200
    printf("MAX = %d\n", MAX);

# undef MAX
    int MAX = 0;
    printf("MAX = %d\n", MAX);

    return 0;
}
ForestDB 2013-01-06
  • 打赏
  • 举报
回复
C需要所有的声明在语句之前,很容易如下修正:

# include <stdio.h>

int main()
{
# define MAX 100
    int a = MAX;
# undef MAX
    int MAX = 0;

    printf("a is %d\n", a);
    printf("MAX is %d\n", MAX);

    return 0;
}
或者

# include <stdio.h>

int main()
{
# define MAX 200
    printf("MAX = %d\n", MAX);

# undef MAX
    {
        int MAX = 0;
        printf("MAX = %d\n", MAX);
    }

    return 0;
}
houmin0036 2013-01-05
  • 打赏
  • 举报
回复
引用 9 楼 ForestDB 的回复:
当你在再也不希望用到这个宏的时候用 #include <stdio.h> int main( ) { #define MAX 200 printf("MAX= %d\n",MAX); int MAX = 100; printf("MAX= %d\n",MAX); } 比如上面的程序,就必须在int MAX这句之前加上undef
#include <stdio.h> int main( ) { #define MAX 200 printf("MAX= %d\n",MAX); #undef MAX int MAX = 100; printf("MAX= %d\n",MAX); } 会出现2个错误(我用的vs2012)   1>c:\users\administrator\documents\visual studio 2012\projects\hou\hou\min.c(7): error C2143: 语法错误 : 缺少“;”(在“类型”的前面) 1>c:\users\administrator\documents\visual studio 2012\projects\hou\hou\min.c(8): error C2065: “MAX”: 未声明的标识符
houmin0036 2013-01-05
  • 打赏
  • 举报
回复
引用 9 楼 ForestDB 的回复:
当你在再也不希望用到这个宏的时候用 #include <stdio.h> int main( ) { #define MAX 200 printf("MAX= %d\n",MAX); int MAX = 100; printf("MAX= %d\n",MAX); } 比如上面的程序,就必须在int MAX这句之前加上undef
引用 9 楼 ForestDB 的回复:
当你在再也不希望用到这个宏的时候用 #include <stdio.h> int main( ) { #define MAX 200 printf("MAX= %d\n",MAX); int MAX = 100; printf("MAX= %d\n",MAX); } 比如上面的程序,就必须在int MAX这句之前加上undef
会出现2个错误(我用的vs2012)   1>c:\users\administrator\documents\visual studio 2012\projects\hou\hou\min.c(7): error C2143: 语法错误 : 缺少“;”(在“类型”的前面) 1>c:\users\administrator\documents\visual studio 2012\projects\hou\hou\min.c(8): error C2065: “MAX”: 未声明的标识符
ForestDB 2013-01-05
  • 打赏
  • 举报
回复
当你在再也不希望用到这个宏的时候用 #include <stdio.h> int main( ) { #define MAX 200 printf("MAX= %d\n",MAX); int MAX = 100; printf("MAX= %d\n",MAX); } 比如上面的程序,就必须在int MAX这句之前加上undef
derekrose 2013-01-04
  • 打赏
  • 举报
回复
引用 4 楼 houmin0036 的回复:
引用 1 楼 derekrose 的回复:当你用完一个宏,比如MAX,你不希望下面的代码用到这个MAX,那么你就可以undef它,那么下面如果你使用这个变量,编译器会报错。再看看我问的问题 你的回复我看后没有收获 不好意思
我小的时候感觉老师讲的都是废话,现在想想还真是那个道理
houmin0036 2013-01-04
  • 打赏
  • 举报
回复
引用 6 楼 zhouchichi203 的回复:
当你用完一个宏,比如MAX,你不希望下面的代码用到这个MAX,那么你就可以undef它,那么下面如果你使用这个变量,编译器会报错。
你可以多见几个账号 用那些账号中的分数来问问题 或者是随便提个问题 悬赏高分 让你另外一个号去回答和接分。 你不要给我说你要攒徽章.
syscofield 2013-01-04
  • 打赏
  • 举报
回复
当你用完一个宏,比如MAX,你不希望下面的代码用到这个MAX,那么你就可以undef它,那么下面如果你使用这个变量,编译器会报错。
houmin0036 2013-01-04
  • 打赏
  • 举报
回复
引用 3 楼 tianweishuiguo 的回复:
C/C++ code?123456789#include <stdio.h>int main( ){#define MAX 200printf("MAX= %d\n",MAX);#undef MAX//#define MAX 300printf("MAX= %d\n",MAX);//undef后再用会出错噢!}
再看看我问的问题 你的回复我看后没有收获 不好意思
houmin0036 2013-01-04
  • 打赏
  • 举报
回复
引用 1 楼 derekrose 的回复:
当你用完一个宏,比如MAX,你不希望下面的代码用到这个MAX,那么你就可以undef它,那么下面如果你使用这个变量,编译器会报错。
再看看我问的问题 你的回复我看后没有收获 不好意思
东大坡居士 2013-01-04
  • 打赏
  • 举报
回复

#include <stdio.h>
int main( )
{
#define MAX 200
printf("MAX= %d\n",MAX);
#undef MAX
//#define MAX 300
printf("MAX= %d\n",MAX);//undef后再用会出错噢!
}
lee_鹿游原 2013-01-04
  • 打赏
  • 举报
回复

#define MAX 50
#include "common.h"
#undef  MAX
只有在common.h里,MAX才有效
加载更多回复(1)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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