專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

#pragma 在嵌入式中的講解和理解

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年04月19日   【字體:

#pragma //提供額外信息的標準方法,可用于指定平臺

這個標記其實是很復雜的,它是什么特點呢,它是根據(jù)你的編譯平臺,就是根據(jù)你所用的不同的編譯器然后你再不同的環(huán)境下,它可以有不同的表達,它能干好多不同的事,都是這一個標記,那么它取決于你后寫什么東西。例如我們使用GCC的編譯器呢它就有這么幾種用法:

#pragma GCC dependency<</SPAN>文件> unix_c_01.c.txt 若《文件》比此文件新 則產(chǎn)生警告

 

#pragma GCC poison <</SPAN>標識> 若出現(xiàn)<</SPAN>標識> 則產(chǎn)生錯誤

 

#pragma pack( 1/2/4/8) 按1、2、4、8字節(jié)對齊補齊

 

Dependency 依賴的意思意思就是說我的當前的文件,正在編譯的文件它要依賴于《文件》,就是說你后面寫的文件比你正在編譯的文件要新的話,就是文件修改時間比它晚會給你一個警告,就是說我的編譯文件依賴于寫的文件但是你的依賴文件改了而在編譯的文件并沒有同步的更新,就有可能產(chǎn)生各種各樣的問題,就給個警告一旦發(fā)現(xiàn)后面的文件比當前文件新就給個警告,

Poison 毒藥的意思 、就是說如果我代碼中出現(xiàn)這樣的標示就給個錯誤 ,比如go to 啊、因為goto有風險 就把goto 定義成毒藥 如果有程序員膽敢寫goto就給個錯誤,編譯就報錯。

Pack 這是指定結(jié)構(gòu)體 或是類對象的對齊方式因為結(jié)構(gòu)體里面有個對齊補齊的問題 32位下缺省是4字節(jié)對齊,如果我不想用這種方式,我想2字節(jié)對齊補齊或者我想1字節(jié)對齊補齊那么就用這方式。

下面代碼試試:

Vi pragma.c vi編譯器

#include

#pragma GCC dependency “dep.c” 依賴這個文件

 

Int main(void){

 

 

Return 0;

 

}

然后我們 touch dep.c 創(chuàng)建一個文件 那么這個文件就比我們pragma.c 要新 因為比它晚創(chuàng)建

Gcc pragma.c

提示

 

Pragma.c:2 警告:當前文件早于dep.c

這條警告就來自于#pragma GCC dependency “dep.c”

比如:touch pragma.c 時間就比dep.c 要晚了

這個時候在編譯就不給警告了 Gcc pragma.c

什么都沒有

 

關(guān)閉窗口

相關(guān)文章