日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

#if defined 和 #if ! defined 的用法

發布時間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 #if defined 和 #if ! defined 的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:MFC初學,頭文件中有

#if !defined(AFX_HELLOMFC_H__706D36F5_2F1B_40AC_8BE9_0BD6A1D7BBDE__INCLUDED_)
#define AFX_HELLOMFC_H__706D36F5_2F1B_40AC_8BE9_0BD6A1D7BBDE__INCLUDED_

// Info : Other content

#endif // !defined(AFX_HELLOMFC_H__706D36F5_2F1B_40AC_8BE9_0BD6A1D7BBDE__INCLUDED_)

注:AFX_HELLOMFC_H__706D36F5_2F1B_40AC_8BE9_0BD6A1D7BBDE__INCLUDED_ 是一個由VC自定義的標識符,你也可以替換成其他的,上面代碼就可以類比為下邊的代碼,看起來是不是清爽很多啊。這是微軟VS的個性化命名

#if !defined(AFX_HELLOMFC_H_)
#define AFX_HELLOMFC_H_

// Info : Other content

#endif // !defined(AFX_HELLOMFC_H_)


正題:C語言的宏定義一、#if defined 的作用因為對于一個大程序而言,我們可能要定義很多常量( 不管是放在源文件還是頭文件 ),那么我們有時考慮定義某個常量時,我們就必須返回檢查原來此常量是否定義,但這樣做很麻煩.
if defined宏正是為這種情況提供了解決方案.舉個例子,如下:

#define a 100

#define b 100

#define v 100

// ^^^^^^

#define s 100

#define da 100

#define af 100

#define a 200 // Here is the key

上面已經定義過一次 a 的值了,因為中間有很多語句,看不到,又忘了有沒有定義,下面又來了一條,把上面的替掉了。這就是問題了!此時,我們要檢查a是否定義(假設我們已經記不著這點了),或者我們要給a一個不同的值,就加入如下句子:

#if defined a // or #ifdef a

#undef a

#define a 200

#endif

或者

#ifndef a

#define a 200

#endif

上面就是 #if defined 的唯一作用了?二、#if ! defined 的作用#if defined XXX_XXX
#endif
是條件編譯,是根據你是否定義了XXX_XXX這個宏,而使用不同的代碼。一般.h文件里最外層的
#if !defined XXX_XXX
#define XXX_XXX
#endif
是為了防止這個.h頭文件被重復include
三、其他相關含義

指令 用途
# 空指令,無任何效果
#include 包含一個源代碼文件
#define 定義宏
#undef 取消已定義的宏
#if 如果給定條件為真,則編譯下面代碼
#ifdef 如果宏已經定義,則編譯下面代碼
#ifndef 如果宏沒有定義,則編譯下面代碼
#elif 如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼
#endif 結束一個#if……#else條件編譯塊
#error 停止編譯并顯示錯誤信息

?

轉載于:https://www.cnblogs.com/herbertchina/p/4306818.html

總結

以上是生活随笔為你收集整理的#if defined 和 #if ! defined 的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。