#define和#undefine的用法


#undef將保持已定義狀態且在

作用域內,直到程序結束或者使用#undef 指令取消定義。

預處理器

在此程序中,我們將取消在先前程序中對預處理器的定義。

1

2

3

4

5

6

7

8

9

10

11

#include <iostream.h>

#include<string.h>

#define MAX 5

#undef MAX

void 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] 的數組大小不可用,因此編譯器發出第二個錯誤消息。

宏定義

1

2

3

4

5

#define TEST_A 1

#define TEST_CLASS_A clase T1

#include "TEST.h"

#undef TEST_A

#undef TEST_CLASS_A

在這一個文件中使用宏定義:

1

2

#undef TEST_A 1

#undef TEST_CLASS_A clase T1

在#include "TEST.h" 這個文件宏定義,釋放掉,就是這個意思,也就是在文件#include "TEST.h" 中宏定義

1

#define TEST_A 1

#define TEST_CLASS_A clase T1 起作用,過了這一語句宏定義就釋放掉了,在test.h里,這個宏是有效的,然后出了這個頭文件,又無效了。

修改已經宏定義的符號常量的值:

1

2

3

4

5

6

7

8

9

10

#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;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM