#undef

#define定義預處理器標識符,將保持已定義狀態且在作用域內,直到程式結束或者使用#undef 指令取消定義。

基本介紹

基本信息,程式實例,預處理器,宏定義,

基本信息

其中,標識符是一個宏名稱。如果標識符當前沒有被定義成一個宏名稱,那么就會忽略該指令。
一旦標識符被定義成一個宏名稱

程式實例

預處理器

在此程式中,我們將取消在先前程式中對預處理器的定義。
#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;}

相關詞條

熱門詞條

聯絡我們