发布网友 发布时间:2022-04-23 12:51
共1个回答
热心网友 时间:2022-04-27 07:27
在此程序中,我们将取消在先前程序中对预处理器的定义。 #include <iostream.h>#include<string.h>#define MAX 5#undef MAXvoid main(){char name[MAX]=abcd; //只能用abcd,否则会提示说超出长度,原因是由于\0字符cout<<MAX = <<MAX<<endl;for(int i=0;i<MAX;i++)cout<<name<< <<endl;}得到如下错误消息:
未定义符号 'MAX'
初始值设定项太多
在此程序中对 MAX 定义后又取消了定义。编译该程序时报错。由于未定义 MAX,char name[MAX] 的数组大小不可用,因此编译器发出第二个错误消息。 #define TEST_A 1#define TEST_CLASS_A clase T1#include TEST.h#undef TEST_A#undef TEST_CLASS_A在这一个文件中使用宏定义: #undef TEST_A 1#undef TEST_CLASS_A clase T1在#include TEST.h 这个文件宏定义,释放掉,就是这个意思,也就是在文件#include TEST.h 中宏定义 #define TEST_A 1#define TEST_CLASS_A clase T1 起作用,过了这一语句宏定义就释放掉了,在test.h里,这个宏是有效的,然后出了这个头文件,又无效了。
::
在TEST.h(或TEST.cpp)中1就是TEST_A,clase T1就是TEST_CLASS_A clase;只在TEST中有效。
程序示例:
修改已经宏定义的符号常量的值: #include <stdio.h>int main( void ){#define MAX 200 printf(MAX= %d\n,MAX);#undef MAX#define MAX 300 printf(MAX= %d\n,MAX); return 0;}