久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 51頭文件REG51.H中__REG51_H__的條件編譯與STM32的#if !defined條件編譯 [打印本頁]

作者: heise    時間: 2014-8-19 23:18
標題: 51頭文件REG51.H中__REG51_H__的條件編譯與STM32的#if !defined條件編譯

通常的51或的頭文件都會使用如下方式:
#ifndef __REG51_H__
#define __REG51_H__
//頭文件內容...
#endif

這是C語言里的條件編譯!
意思是,如果預編譯時沒有定義宏__REG51_H__,則定義該宏,然后編譯其后的內容,到#endif結束。其作用是防止頭文件嵌套包含時造成的重復編譯。

例如,兩個文件都包含了,第一次遇到#include 時,會包括處理此文件,處理的同時定義了__REG51_H__。第二次再遇到#include 的時候,因為已經定義了__REG51_H__,所以編譯器不會再處理#endif之前的內容。這樣就防止了重復編譯。


在stm32中會遇到這樣的條件編譯:


#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)


#edfif


這里我們先講講#ifdef 和 #if defined 的區別,后者可以組成復雜的預編譯條件,比如


#if defined (AAA) && defined (BBB)

xxxxxxxxx

#endif

這時候是否編譯取決于AAA和BBB是否都已經被宏定義,如果二者都被宏定義則編譯,只要二者中的一個沒有被宏定義,這時候就不編譯了。實際上就是判斷if后面那句話為真還是假,在決定是否編譯。

#if defined (AAA) || VERSION > 12

xxxxxxxxx

#endif



而#ifdef 就不能用上面的用法,也就是說,當你要判斷單個宏是否定義時

#ifdef 和 #if defined 效果是一樣的,但是當你要判斷復雜的條件時,只能用 #if defined


而#if !defined 就是用于判斷復雜的條件不成立時,則編譯。



作者: duoshabao    時間: 2014-8-20 11:28





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文二区| 国产精品美女久久久久aⅴ国产馆 | 久久午夜视频 | 高清视频一区二区三区 | 成人在线中文字幕 | 国产精品国产三级国产aⅴ中文 | 精品一区国产 | 韩国av网站在线观看 | 91精品国产91久久久久久丝袜 | 久久久久久久久国产成人免费 | 精品日韩一区 | 一级在线观看 | 在线国产一区二区 | 久色一区| 在线免费观看成年人视频 | 国产成人精品高清久久 | 日本不卡免费新一二三区 | 黄片毛片在线观看 | 久久51 | 91视频导航 | 日韩一区二区三区在线 | 影视先锋av资源噜噜 | 久久国 | 国产精品污污视频 | 欧美一级特黄aaa大片在线观看 | 日本午夜免费福利视频 | 国产成人免费视频网站视频社区 | 成人三区| 国产美女视频黄a视频免费 国产精品福利视频 | 欧美精品成人影院 | 拍拍无遮挡人做人爱视频免费观看 | 亚洲欧美在线观看 | 国产一级电影网 | 一区二区三区国产 | 国产女人第一次做爰毛片 | 91婷婷韩国欧美一区二区 | 在线观看视频91 | 一区二区三区免费看 | 国产精品视频免费观看 | 久久大 | 亚洲成人一区 |