无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

7.一個(gè)”標(biāo)準(zhǔn)”宏MAX,輸入兩個(gè)參數(shù)并返回較大的一個(gè)(經(jīng)典寫(xiě)法+Linux內(nèi)核寫(xiě)法)

2023-08-23 10:23 作者:踏星赴夢(mèng)  | 我要投稿

1.比較兩個(gè)數(shù)大小返回最大值的經(jīng)典宏寫(xiě)法(注意細(xì)節(jié),要加入括號(hào)):

這種經(jīng)典寫(xiě)法也是有問(wèn)題的:如果傳入的參數(shù)分別是i++和j++,這個(gè)比較大小就會(huì)出錯(cuò),i++和j++在宏展開(kāi)的時(shí)候會(huì)出現(xiàn)在多個(gè)地方,i和j會(huì)自增多次

如:

2.Linux內(nèi)核的實(shí)現(xiàn)方法

在GNU C 語(yǔ)言中,如果知道a和b的類(lèi)型,可以在宏里面定義一個(gè)變量,將a和b分別賦值給變量,然后在進(jìn)行比較:

如果不知道具體的數(shù)據(jù)類(lèi)型,就要使用typeof類(lèi)轉(zhuǎn)換宏,Linux內(nèi)核中的例子如下:

一個(gè)需要注意的問(wèn)題,下述代碼的作用是什么:

(1)首先&_a == &_b 是對(duì)_a和_b取地址進(jìn)行比較,然后得到一個(gè)bool值,在這個(gè)宏之中,大概率是false;

(2)然后對(duì)這個(gè)bool值進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,也就是對(duì)這個(gè)無(wú)意義的變量進(jìn)行引用操作,消除該變量沒(méi)有被引用的警告;

(3)給出有用的警告:

①兩個(gè)地址相比的bool值沒(méi)有被引用的警告(該警告被(void)object;消除)

②兩個(gè)地址類(lèi)型不一樣,進(jìn)行比較時(shí)Linux會(huì)給出類(lèi)型不一致警告,該警告作為有用警告

(4)要注意,C語(yǔ)言中地址包含兩類(lèi)信息

①物理地址:變量存放在什么地方(位置信息,或者說(shuō)內(nèi)存編號(hào)/純地址)

②地址類(lèi)型:所指向的數(shù)據(jù)的類(lèi)型信息





7.一個(gè)”標(biāo)準(zhǔn)”宏MAX,輸入兩個(gè)參數(shù)并返回較大的一個(gè)(經(jīng)典寫(xiě)法+Linux內(nèi)核寫(xiě)法)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阿尔山市| 桂平市| 淮安市| 中江县| 于田县| 丹寨县| 通辽市| 象州县| 邻水| 吴桥县| 桂林市| 北票市| 鹤庆县| 通许县| 秦安县| 闵行区| 陆河县| 隆德县| 灵寿县| 乌海市| 延寿县| 佳木斯市| 宜章县| 自治县| 昌都县| 沙田区| 合作市| 邯郸县| 沧州市| 新源县| 汶川县| 佛冈县| 田林县| 府谷县| 宣恩县| 大冶市| 长乐市| 苍山县| 靖西县| 齐齐哈尔市| 亳州市|