久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

以文本方式查看主題

-  曙海教育集團(tuán)論壇  (http://www.rfoamep.cn/bbs/index.asp)
--  C++語言開發(fā)  (http://www.rfoamep.cn/bbs/list.asp?boardid=63)
----  C(不討論C++)語言  (http://www.rfoamep.cn/bbs/dispbbs.asp?boardid=63&id=2426)

--  作者:wangxinxin
--  發(fā)布時(shí)間:2010-12-10 14:26:54
--  C(不討論C++)語言

C語言中的名字空間, 較少被提及. 下面的寫法乍看之下是會(huì)讓人吃驚的:

#include <stdio.h>

struct Foo
{
    int table_id;
    signed int length:4;
} ;

typedef struct Foo Foo;
int main()
{
    Foo Foo;
    printf("size: %lld ", (long long) sizeof(Foo));
    // Foo t1 = {0};
    return 0;
}

Foo 首先是一個(gè)struct的tag名字, 其次又被typedef定義了一個(gè)同名的別名. 然后, 在main函數(shù)中,
以Foo Foo; 定義了該類型的一個(gè)變量, 同樣名為Foo.

這樣的程序竟然是符合標(biāo)準(zhǔn)的. 原因就在于C語言中有4個(gè)名字空間, 當(dāng)標(biāo)識(shí)符在不同的上下文情境下位于不同的名字空間時(shí), 可同時(shí)出現(xiàn)而不會(huì)引起沖突.

我查看了C語言標(biāo)準(zhǔn), 6.2.3 Name Spaces and Identifiers
其中定義的4個(gè)名字空間如下:
1. label 單獨(dú)位于一個(gè)名字空間, 由于goto有害論, label受到牽連, 現(xiàn)今其重要性極低.
2. struct, union  , enum的名字, 在C標(biāo)準(zhǔn)中用tag一詞指代, 它們的名字位于一個(gè)名字空間, 也就是說, 如果你已經(jīng)
struct Foo { ... };
就不能再
enum Foo {... };

3. struct, 或union  的成員, 位于由相應(yīng)的struct或union  聲明范圍內(nèi)的一個(gè)密閉名字空間, 兩個(gè)不同的struct, 或struct與union  的成員, 可以有同樣的名字, 這一規(guī)則可以遞歸地施行于struct / union  的子成員. 如果它們本身也是一個(gè)struct或union  的話.

4. 所有其它的一切東西, 比如函數(shù)名, 變量名等等.

根據(jù)這4條, 上面的程序該如何解釋? Foo 重復(fù)出現(xiàn)了3次:
struct Tag.
typedef 或
main內(nèi)的變量名.

根據(jù)上面的定義, 作為typedef定義出來的類型名和main內(nèi)的變量名同屬于"其它"類, 應(yīng)該會(huì)出現(xiàn)沖突. 但實(shí)際上這樣的用法是允許的. 因?yàn)樵趍ain內(nèi)通過
Foo Foo;
定義變量Foo時(shí), 第一個(gè)Foo的語意只能是typedef定義出來的Foo才合理, 此時(shí)作為變量的Foo還沒定義完成, 所以沒有沖突.

那一行注釋起來的
// Foo t1...
如果去掉注釋, 就會(huì)引起編譯錯(cuò)誤,

test.c:15: error: expected \';\' before \'t1\'
gcc的這條錯(cuò)誤并沒提供多少有用的信息.

因?yàn)樵诖藭r(shí)的上下文中, 就有了兩個(gè)identifier位于同一個(gè)名字空間. 而printf中的sizeof(Foo) 究竟是作為typedef定義出來的別名Foo, 還是變量名Foo.

雖然無法從程序運(yùn)行結(jié)果上知道, 但可以確定應(yīng)該是變量名Foo, 簡(jiǎn)單的實(shí)驗(yàn)加推理可以證實(shí)這一點(diǎn):
將Foo Foo改為char Foo;
此時(shí)大小變?yōu)?.

推理:
typdef定義的別名其作為域在最外層, 而在main內(nèi), 變量Foo暫時(shí)性地遮蔽了外層Foo的意義.
對(duì)上面程序作如下修改, 得到的結(jié)果可以證實(shí):

int main()
{
    {
        char Foo;
        int a = 4, b = a;
        printf("size: %lld ", (long long)sizeof(Foo) );
    }
    printf("size: %lld ", (long long)sizeof(Foo) );
    struct Foo t1 = {0};
    return 0;
}

另一個(gè)需要注意的地方是, C語言中定義的結(jié)構(gòu)的可見性, 是平坦的,
struct Foo
{
   struct Bar { ... };
};

熟悉C++類型系統(tǒng)的人可能會(huì)懷疑是否能直接使用結(jié)構(gòu)Bar, 要不要Foo::, C里面Bar的可用性跟Foo是平級(jí)的.本篇文章


久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
久久日韩粉嫩一区二区三区 | 免费观看在线色综合| 亚洲欧美日韩在线| 亚洲欧美日韩国产综合在线 | 亚洲激情图片一区| 亚洲色图在线看| 中文字幕欧美一| 亚洲一区在线观看免费 | 国产一区二区三区电影在线观看 | 国产精品视频免费一区二区三区| 114国产精品久久免费观看| 成人黄色片视频网站| 国产精品午夜av在线| 蜜桃麻豆91| 色88888久久久久久影院按摩| 国产精品视频在线看| 韩国成人av| 国产一区二区影院| 成人av免费在线播放| 国产日韩欧美精品| 天天综合色天天综合色hd| 亚洲一区二区三区在线观看视频| 欧美伊人久久久久久久久影院| 678五月天丁香亚洲综合网| 精品国产百合女同互慰| 亚洲欧美在线aaa| 美女诱惑一区二区| 99re这里只有精品首页| 日韩av电影免费观看| 欧美精品自拍偷拍| 国产精品成人免费在线| 日韩精品一级中文字幕精品视频免费观看| 精品亚洲成a人| 国产精品日韩欧美一区二区三区 | 欧美怡红院视频| 2017欧美狠狠色| 亚洲黄色小说网站| 国产精品一区二区免费不卡| 成人欧美一区二区三区视频xxx| 先锋影音亚洲资源| 在线播放91灌醉迷j高跟美女 | 欧美变态tickle挠乳网站| 亚洲日本va在线观看| 国产综合色产在线精品| 国产在线精品二区| 欧美日韩精品系列| 国产精品久久久久久久久图文区| 日韩中文字幕1| 成人免费在线看片| 欧美探花视频资源| 椎名由奈av一区二区三区| 国产综合色在线视频区| 精品在线视频一区二区三区| 欧美三级午夜理伦三级中视频| 中文字幕在线观看不卡视频| 国产精品亚洲第一| 视频一区二区精品| 国产欧美一区二区在线观看| 精品午夜久久福利影院 | 久久精品噜噜噜成人av农村| 国产美女精品在线观看| 欧美伦理影视网| 亚洲专区一二三| 97久久夜色精品国产九色| 欧美日韩激情一区| 伊人一区二区三区| 91麻豆123| 欧美一区午夜精品| 日韩中文字幕麻豆| 欧美一二三四五区| 国产日产欧产精品推荐色| 国内成人免费视频| 亚洲人成影视在线观看| 中日韩免费视频中文字幕| 国产成人啪免费观看软件| 日本高清成人免费播放| 亚洲午夜久久久久久久久电影网| 成人黄色在线免费观看| 日韩欧美国产三级电影视频| 麻豆精品新av中文字幕| 伊人情人网综合| 亚洲综合在线电影| 开心色怡人综合网站| 国产清纯在线一区二区www| 成人精品视频一区| 日韩欧美综合在线| 国内精品国产三级国产a久久| 中文字幕色一区二区| 一区二区免费在线播放| 精品国产一区二区三区麻豆免费观看完整版 | 免费在线观看精品| 亚洲精品影院| 一区二区三区欧美在线观看| 精品视频免费观看| 国产欧美日韩卡一| 91国产在线播放| 国产三级精品视频| 91在线视频播放地址| 精品日韩在线一区| a级高清视频欧美日韩| 久久奇米777| 97久久人人超碰caoprom欧美 | 亚洲青青青在线视频| 国产综合第一页| 亚洲视频在线观看三级| 欧美精品二区三区四区免费看视频 | 中文精品视频一区二区在线观看| 一区二区三区免费看视频| 精品欧美日韩在线| 一区二区三区加勒比av| 日韩精品国内| 三级亚洲高清视频| 欧美天天综合网| 国产成人综合在线播放| 欧美va在线播放| 国产精品免费观看高清| 亚洲精品中文在线影院| 午夜欧美一区二区三区免费观看| 污片在线观看一区二区| 欧美日韩一卡二卡| 粉嫩在线一区二区三区视频| 久久亚洲欧美国产精品乐播 | 91视频一区二区三区| 久久久久久久综合日本| 久久本道综合色狠狠五月| 色婷婷激情久久| 精品一区二区三区日本| 亚洲最大的成人av| 一区二区在线观| 国产一区二区调教| 精品福利在线导航| 久久99精品久久久久久久久久| 亚洲综合清纯丝袜自拍| 日本精品一区二区三区高清| 国产麻豆精品久久一二三| 日韩精品一区在线观看| 国产精品亚洲综合| 天堂一区二区在线| 欧美一激情一区二区三区| av免费观看久久| 亚洲一区二区三区不卡国产欧美| 色综合婷婷久久| 国产suv精品一区二区6| 中文字幕一区二区三区在线观看| 亚洲欧洲精品一区二区三区波多野1战4 | 日本不卡视频在线观看| 日韩欧美久久久| 久久久久无码国产精品一区| 日本系列欧美系列| 欧美精品一区二区不卡| 日韩欧美一区二区视频在线播放| 国产一区在线看| 国产精品毛片久久久久久| 亚洲精品国产一区| 成人av网站在线| 亚洲国产va精品久久久不卡综合| 欧美日韩黄色影视| 国产女主播一区二区| 老司机精品视频在线| 国产精品久久久久久久久动漫| 91国偷自产一区二区使用方法| 91亚洲精品久久久蜜桃| 日本一不卡视频| 国产欧美一区二区精品性色超碰| 色综合久久88色综合天天| kk眼镜猥琐国模调教系列一区二区 | 激情综合网天天干| 国产日本欧洲亚洲| 欧美色图一区二区三区| 国产三级精品在线不卡| 狠狠色狠狠色综合系列| 亚洲人精品午夜| 欧美一区二区精品在线| 亚洲人成网站在线观看播放| yy111111少妇影院日韩夜片| 美女网站色91| 亚洲免费在线电影| 久久色在线视频| 欧美日韩免费视频| 蜜桃麻豆www久久国产精品| 国产成人免费视频网站 | 国产一区中文字幕| 18涩涩午夜精品.www| 日韩一级黄色大片| 在线免费观看日本一区| 明星裸体视频一区二区| 成人精品一区二区三区中文字幕| 日韩精品亚洲一区二区三区免费| 国产欧美精品日韩区二区麻豆天美| 欧美美女喷水视频| 色久综合一二码| 日韩电影免费观看在| 国内精品久久国产| 91在线免费视频观看| 国产成人av电影在线观看| 蜜桃视频一区二区| 国产精品入口麻豆九色| 久久伊99综合婷婷久久伊| 91精品国产综合久久精品图片 | 99久久伊人网影院|