音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

在gcc中有的語句為什么不執(zhí)行?

作者:GD_liu 欄目:單片機
在gcc中有的語句為什么不執(zhí)行?
用GCC做一個項目,編譯選項為s,在執(zhí)行中發(fā)現(xiàn)有多處賦值語句不執(zhí)行,造成執(zhí)行錯誤,如何避免?從早上查問題,查到現(xiàn)在,也沒找到原因,請網(wǎng)友協(xié)助。例:
ucTemp1 = ucTemp2;   //語句1
if (ucTemp1 = ucTemp3)
{
...
}
結果語句1不執(zhí)行,造成下面判斷錯誤,在程序中多處出現(xiàn)這樣的問題。以前也用GCC,還沒發(fā)現(xiàn)這樣。

2樓: >>參與討論
DEF
加上下面語句試試
volatile ucTemp1;

3樓: >>參與討論
AA55
if (ucTemp1 = ucTemp3)?
ucTemp1 = ucTemp3?

這是說,想把ucTemp3復制給ucTemp1,然后判定ucTemp1是否不為0,如果非0就執(zhí)行{}的內容?

你的原意該不會如此吧?




4樓: >>參與討論
zsmbj
if (ucTemp1 = ucTemp3)?呵呵!
應該是if (ucTemp1 == ucTemp3)吧!

5樓: >>參與討論
John_Lee
應該面壁
 
6樓: >>參與討論
Anitya
面壁?!~~~
 
7樓: >>參與討論
GD_liu
樓上的幾位朋友,是手誤,敲錯了
我現(xiàn)在在前面加上volatile,語句得到了執(zhí)行,但我程序很多地方都是這樣,難道都需要加volatile嗎?GCC的高效率不是這樣得到執(zhí)行吧。
if (ucTemp1 == ucTemp3)
上面是敲錯了

8樓: >>參與討論
winsu
GCC其實比較嚴格
你所說的問題與優(yōu)化選項可能有關。
GCC要求語法比較嚴格,比標準C嚴格一些.
例如void fuc()時編譯時會有警告.寫成void fuc(void)則沒有警告。

9樓: >>參與討論
老蔣
不到萬不得已的情況下不用去懷疑編譯器
一個編譯器之所以能被大家使用,就證明它是可靠的。有錯誤先確認自己的程序,或是語法不符,或是有些細節(jié)還不清楚等等。到現(xiàn)在為止,我做的所有項目沒有一個是因編譯器或匯編器有問題而引發(fā)錯誤的。

10樓: >>參與討論
qjy_dali
要注意各個編譯器的個性特點呀
 
11樓: >>參與討論
GD_liu
我也有這樣的看法
我一直也有這樣的看法,以前我用GCC也一直正常,也只是這個項目中一直遇到莫名其秒的問題,現(xiàn)在有出一個:
uint8_t i;
uint16_t j;
for (i = 0;i < 10; i++)
{
    for (j = 0;j < 60000;j++)
    ;
}
以上為開機的一個延時程序,原來一直正常,今天再編譯運行時,程序就死到這了,程序執(zhí)行不下去,由于沒有仿真器,也不知道結果。但將上面的語句屏蔽,板子就運行正常。

12樓: >>參與討論
DEF
主要是編譯器優(yōu)化問題
GCC比較聰明,如果它發(fā)現(xiàn)用戶變量執(zhí)行的是一些無必要的代碼,就會被優(yōu)化調。
象循環(huán)延時代碼,就會被誤認為不必要代碼,會被優(yōu)化調。
如果你一直正?赡苁莾(yōu)化選項問題了。

13樓: >>參與討論
gxliangx
DEF說的有道理
我嘗試在代碼中加如
float i;
i=3.0*2.3;

然后編譯.在 lss文件中看不到有這段代碼的編譯.你可以嘗試修改makefile中
的CFLAG的 -O選項.把優(yōu)化級別改的最低.再重新編譯試試.

14樓: >>參與討論
9810956
RE
ucTemp1 = ucTemp2;   //語句1
if (ucTemp1 = =ucTemp3)
{
...
}

這正是GCC聰明之處。 是我程序寫成
if (ucTemp2 = =ucTemp3)
{
...
}



15樓: >>參與討論
HotPower
郁悶...想用C++編程,但不能源碼仿真...
GCC好,可其他"外圍設備速率"太低...只好用C了...

可惜GCC的類了...

16樓: >>參與討論
sleepcat
我遇到過,醬紫地:
這個發(fā)生在優(yōu)化級別較高的時候,
而且你要比較的兩個東西是百分之百相等的東西,所以編譯器幫你優(yōu)化掉了
你可以看ASM代碼

參與討論
昵稱:
討論內容:
 
 
相關帖子
ICC AVR是否支持聯(lián)合體中定義位變量
真的沒人會嗎?
請問,S1200能否用500k的諧振器?如能用,電容用什么參數(shù)?
一個關于與電腦串口通訊的試驗(Mega8)
mega32不能向下兼容mega16?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號