專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

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

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

#pragma //提供額外信息的標(biāo)準(zhǔn)方法,可用于指定平臺(tái)

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

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

 

#pragma GCC poison <</SPAN>標(biāo)識(shí)> 若出現(xiàn)<</SPAN>標(biāo)識(shí)> 則產(chǎn)生錯(cuò)誤

 

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

 

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

Poison 毒藥的意思 、就是說(shuō)如果我代碼中出現(xiàn)這樣的標(biāo)示就給個(gè)錯(cuò)誤 ,比如go to 啊、因?yàn)間oto有風(fēng)險(xiǎn) 就把goto 定義成毒藥 如果有程序員膽敢寫goto就給個(gè)錯(cuò)誤,編譯就報(bào)錯(cuò)。

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

下面代碼試試:

Vi pragma.c vi編譯器

#include

#pragma GCC dependency “dep.c” 依賴這個(gè)文件

 

Int main(void){

 

 

Return 0;

 

}

然后我們 touch dep.c 創(chuàng)建一個(gè)文件 那么這個(gè)文件就比我們pragma.c 要新 因?yàn)楸人韯?chuàng)建

Gcc pragma.c

提示

 

Pragma.c:2 警告:當(dāng)前文件早于dep.c

這條警告就來(lái)自于#pragma GCC dependency “dep.c”

比如:touch pragma.c 時(shí)間就比dep.c 要晚了

這個(gè)時(shí)候在編譯就不給警告了 Gcc pragma.c

什么都沒(méi)有

 

關(guān)閉窗口

相關(guān)文章