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

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

代碼居然還可以這樣寫, 有人見過嗎? Cool!!

作者:rockos 欄目:驅(qū)動編程
代碼居然還可以這樣寫, 有人見過嗎? Cool!!
摘自linux-2.6.18/drivers/video/console/fbcon.c, LINE 344:

    SWITCH (color) {
    case 0:
        color = 0; /* black */
        break;
    case 1 ... 6:
        color = 2; /* WHITE */
        break;
    case 7 ... 8:
        color = 1; /* gray */
        break;
    default:
        color = 3; /* intense WHITE */
        break;
    }

偶一直老老實實地寫case 1: case 2: ... case6: 的說……

這樣的代碼真是帥呆了……反正偶寫代碼這么多年,頭一次見到


2樓: >>參與討論
yugen
gcc支持
這種寫法不是標準C的寫法,具我所知只有g(shù)cc支持

3樓: >>參與討論
lxg_fly
re
我喜歡,不錯,我也是第一次見啊~!

4樓: >>參與討論
風(fēng)吹草動
書寫格式?
先模仿一下

case 1...6
case 1 ... 6

不過奇怪的是什么時候要這樣做?

5樓: >>參與討論
fineamy
Gcc作了好多更方便的擴展啊!
 
6樓: >>參與討論
rockos
re 風(fēng)吹早動

SWITCH (x)
{
    case 1:
    case 2:
    case 3:
    case 4:
        ....
        break;
    default:
        ....
        break;
}

SWITCH(x)
{
    case 1 ... 4:
        ....
        break;
    default:
        ....
        break;
}

可以少寫幾條case語句,但是如果區(qū)域比較大,比如有100個case做同樣的事情,gcc的這個語法優(yōu)勢就出來的(當然,不能向其它編譯器移植)。

另外可行的做法是連續(xù)使用if...else...語句,不過可讀性都沒有SWITCH/case語句好,代碼效率或許會高一些,但也不一定。

偶特崇拜那些寫編譯器的大牛們……


7樓: >>參與討論
平常人
Linux中太多這種不標準的東西,結(jié)果變成阻礙其發(fā)展的一大障礙
 
8樓: >>參與討論
fineamy
GCC好象是由BISON生成,
而ASCI C是由YACC生成,但BISON兼容YACC,所以GCC兼容ASCI C但反過來不行.

9樓: >>參與討論
rockos
不見得
Linux內(nèi)核和gcc編譯器互相依存, 互相推動, 才能源源不斷地發(fā)展下去.

Linux內(nèi)核和gcc分道揚鑣, 對linux和gcc來講都不是好消息。



參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
]minicom怎么保存啟動信息
開發(fā)linux設(shè)備驅(qū)動程序并不是想象的那么難
請教! 安裝好cygwin后, 為什么輸入vim命令系統(tǒng)不認?
問一個問題,重裝window看不見liunx怎么辦?
求購視頻服務(wù)器方案
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


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