物质和意识的辩证关系、感知和注意力之间有怎样的关系?

&b&借题主的问题,我来贴贴之前写的“瑟曦的裸戏是否有必要”一文。&/b&&br&&p&瑟曦全裸游街,是《权力的游戏》第五季最受全球影迷关注的桥段。对于黄暴成性的HBO来说,让演员裸个体并不是什么值得一惊一乍的事。&/p&&br&&p&但这场裸戏很特殊。瑟曦之裸,并不三俗。它不是一场普通的裸戏。它是深刻的命运史诗。&/p&&br&&br&&p&&b&裸戏,有必要吗?&/b&&/p&&br&&br&&p&裸戏之于今人,已经算不得事,犹如烹饪时必须放的佐料。便是一向审查严格的国产影视,尺度也越来越大。这大概是出于“解放人性”的现代社会哲学,对身体的耻辱感逐渐消失的缘故。&/p&&br&&p&但是,咱们先冷静一下。追根溯源,思考一个元问题:有多少裸戏是必要的桥段?&/p&&br&&br&&p&裸戏,归纳起来,大约有两种目的。&/p&&br&&p&一&/p&&br&&p&无肉不火。露肉已经是影视剧获得关注的一大市场噱头。这就是所谓纯粹的为裸而裸。举几个例子:&/p&&br&&p&忍不住先拿两部国产电影祭旗&/p&&br&&img src=&/896e3cefcbe_b.jpg& data-rawwidth=&796& data-rawheight=&407& class=&origin_image zh-lightbox-thumb& width=&796& data-original=&/896e3cefcbe_r.jpg&&&p&《咱们结婚吧》。郑恺的臀部实在没有必要露,何况翘度还不如我&/p&&br&&img src=&/eb3bbc2d2dd2c330b63a_b.jpg& data-rawwidth=&1353& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&1353& data-original=&/eb3bbc2d2dd2c330b63a_r.jpg&&&p&《天降雄师》。大年初一,偕老扶幼合家欢的电影,毫无预警背部全裸。有必要吗?&/p&&br&&br&&p&(好了,回归美剧)&/p&&br&&img src=&/caaf6e8fb51db9f2319e05a_b.jpg& data-rawwidth=&1024& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/caaf6e8fb51db9f2319e05a_r.jpg&&&br&&p&《斯巴达克斯》&/p&&br&&p&&a href=&///?target=http%3A///r/YHWpsXbErCvTrTLS9yBy& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/YHWpsXb&/span&&span class=&invisible&&ErCvTrTLS9yBy&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&&br&&p&《加州靡情》&/p&&br&&br&&p&二&/p&&br&&p&出于表达导演本人或制作方任情纵性、不拘一格的人生态度。演员露的每一个点,都在故意强行刺破观众被主流教育塑造的道德价值体系。“愚蠢的中产们,老子就是要帮你们打开新世界。”&/p&&br&&p&&a href=&///?target=http%3A///r/YHWpsXbErCvTrTLS9yBy& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/YHWpsXb&/span&&span class=&invisible&&ErCvTrTLS9yBy&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&&p&《无耻之徒》&/p&&br&&img src=&/70ee2dabacaadc61b64e185c_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/70ee2dabacaadc61b64e185c_r.jpg&&&p&《性爱大师》&/p&&br&&p&&a href=&///?target=http%3A///r/YHWpsXbErCvTrTLS9yBy& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/YHWpsXb&/span&&span class=&invisible&&ErCvTrTLS9yBy&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&&p&《女子监狱》&/p&&br&&p&当然,&/p&&p&大多数时候,二者又都有重合。如果一部裸戏,即能收获市场,又能打造导演独具一格的个人形象,那便完美。&/p&&br&&br&&br&&p&&b&“瑟曦的全裸,跟这些不一样”&/b&&/p&&br&&br&&p&可是,有少数裸戏,却是真正的非裸不可。不是出于获得噱头,也不是为了显示导演逼格,而是出于作品本身的艺术与美学逻辑。就如文艺复兴时期层出不穷的裸体雕像与绘画。这些裸戏,张力十足,观众感觉不到情色,相反,部分敏感的观众可能甚至还能从中触碰到人类与生俱来的悲凉与无奈。&/p&&br&&p&瑟曦被赤裸游街,就属于这一种。&/p&&br&&img src=&/b4b1ccf2958_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b4b1ccf2958_r.jpg&&&br&&p&瑟曦赤裸游街,从横向上,就《权力游戏》故事本身发展而言固然是水道渠成的关键一环,并非突然插入以提升收视之用。但从纵向上看,瑟曦之裸,背后也有欧洲文化的积淀,让人联想起欧洲历史上的一些碎片。&br&&/p&&br&&p&1&/p&&br&&p&比如,对女巫的刑罚.&/p&&br&&p&中世纪晚期,欧洲掀起了迫害所谓“女巫”的狂潮。只要和非基督教的宗教沾上一点边的女性,都可能被当作“女巫”审理。(今天喜欢谈星座的女孩子啊,你们不知道自己有多幸福)一旦被视为女巫,基本都会被处以火刑或斩首。据统计,整个中世纪,大概有数百万女性被当作女巫处死。&/p&&br&&p&这和瑟曦有什么关系呢?&/p&&br&&p&——很多“女巫”在被处死前,都还要接受残酷的刑罚。其中就包括被剥光衣服,剃掉毛发,当众游行。每到这个时候,一城之居民,通常就会像春节庙会一样,人手一个棉花糖和烤玉米,围拢过来嘻嘻哈哈地看,热闹极了。&/p&&br&&p&人心如此,乃知人世当真如阿鼻地狱。&/p&&br&&p&想来作者乔治马丁,在谋划瑟曦游街这一段,脑海里浮现的,一定是女巫的历史蓝本。&/p&&br&&p&2&/p&&br&&p&又如,Godiva的传说.&/p&&br&&p&可是,也还有另外一桩文化典故。同样是女性裸体游街,却没有“女巫”带给人家的恐怖与残忍,相反,颇有几分“正能量”。&/p&&br&&img src=&/d10bf2ffe8d24e11c20df4_b.jpg& data-rawwidth=&1600& data-rawheight=&1336& class=&origin_image zh-lightbox-thumb& width=&1600& data-original=&/d10bf2ffe8d24e11c20df4_r.jpg&&&br&&p&11世纪时,英国考文垂市的税负沉重,人民生活悲惨。市长夫人godiva心中不忍,一再请求丈夫减轻税负。市长屡次拒绝,最后拗不过妻子,不耐烦云:“你若裸身绕市行走一圈,我便减税!”不想妻子二话没说,第二日当真脱光衣服,骑着马就出了门。得到消息的考文垂市民,纷纷关闭门窗,躲在家里,以示敬意。市长无奈,只得下令减税。&br&&/p&&br&&p&然而,同样是身份尊贵,同样是裸体游街,godiva夫人获得了身前身后的美名,瑟曦却遭受了命运的嘲讽与毁灭。&/p&&br&&br&&br&&p&&b&“被剥去的不是衣服,是权力的伪装”&/b&&/p&&br&&img src=&/aacd3b0737d_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/aacd3b0737d_r.jpg&&&br&&p&在前几卷中,虽然有丧子失父的惨痛经历,瑟曦仍然母仪天下,不可一世,可谓登上人生巅峰。但裸体游街一出,她的政治生涯也画上了句号。她被软禁在红堡中,完全失去了控制朝政的能力。从随后的剧情我们可知,即使裸体游街,也无法洗清瑟曦的罪孽,等待她的还有比武审判。这位曾经位高权重的太后,已经成为了被人摆弄的棋子。&/p&&br&&p&权力,正冷笑着抛弃她和她所在的兰尼斯特家族。&/p&&br&&img src=&/c26365bdaea62b9d8b936_b.jpg& data-rawwidth=&1200& data-rawheight=&910& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&/c26365bdaea62b9d8b936_r.jpg&&&br&&p&当代人看古时帝王贵族,常常会惊叹于他们的华服之美。但正如中国古代的礼制对于服饰有着严格的规定,衣服本身就是权力象征的一部分。当衣服落下时,就是权力失去之日。&/p&&br&&p&比如,去年被发现遗体的英国国王理查三世,在内战中被杀后,尸体被剥光衣服,放在酒馆里供人参观。&/p&&br&&p&比如,中国混乱的南北朝时期,官员一旦被皇帝赐死,他身上的华服就会被甲士们剥下抢走。&/p&&br&&p&瑟曦在众目睽睽之下,裸体游街,至此,她已彻底丧失了权力对她的装饰。没有了衣服,没有了权力,她一切光环落尽,回归了普普通通的“人”的身份——更惨的是,回归了“女人”的自然属性。在那样一个男权至上的社会里,这意味着你将彻底丧失主体性与主动性,成为男性——哪怕是最低贱的一个男性手中天生的玩物。&/p&&br&&p&事实上,当全城男人毫无忌惮地打量她身体每一个部位时,她已经成了一个“物件”。太后,尊贵,权力,都永远离她而去。区区一生,犹如经历两度轮回。&/p&&br&&img src=&/f55a953fd8cf_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f55a953fd8cf_r.jpg&&&br&&p&不知道彼时的瑟曦,心中会不会与两千年前临刑时的李斯有着同样的感慨:“欲出上蔡东门,逐狡兔,可得乎?”命运的捉弄,于此为极。&br&&/p&&br&&p&还记得她曾经对艾德史塔克说的那句话么:“在权力的游戏中,你不当赢家,就只有死路一条,没有中间地带”。很显然,她输了。&/p&&br&&p&这就是《权力的游戏》这部作品的伟大之处。在架空世界里用最写实冷酷的笔调,集中展现了古今中外最核心的事实:人类天生易被权力蛊惑,被权力腐化,被权力抛弃,被权力毁灭。这是从不曾中断的历史。人类的历史,就是权力更替的历史,人类的命运,就是被权力戏弄的命运。&/p&&br&&p&所以说,瑟曦之裸,属于少数那种有真正价值、不得不裸的裸戏。她赤裸裸在万人瞩目下行走,每一步都是对人类命运的嘲讽。说这是一场史诗级的桥段,也不为过。&/p&&br&&p&所以,和一般小成本制作不同,为了拍好这一段,《权力的游戏》剧组也付出了十二万分的精力和血本。&/p&&br&&br&&p&&b&“史上最烧钱的一场裸戏”&/b&&/p&&br&&p&按照原著,瑟曦游街的起点是圣贝勒大教堂(The Great Sept of Baelor)。但现实中该教堂的拍摄地——位于克罗地亚的圣尼古拉斯教堂不允许这场裸戏拍摄。无奈之下,土豪剧组只能在附近临时搭起一个假教堂。&/p&&br&&img src=&/2de0e79ad0e23bfccccbbf_b.jpg& data-rawwidth=&634& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&634& data-original=&/2de0e79ad0e23bfccccbbf_r.jpg&&&br&&p&同时,剧组还清空了半个镇的居民,花钱请所有店家当日歇业,雇了200名安保人员,并严厉警告任何人提前泄露照片都将遭到诉讼。&/p&&br&&img src=&/8e52cd38efd9b9c38e136c_b.jpg& data-rawwidth=&634& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&634& data-original=&/8e52cd38efd9b9c38e136c_r.jpg&&&br&&p&据估计,为此剧组总共耗费在20万美元以上。堪称史上最昂贵的一场裸戏。&/p&&br&&img src=&/697f36b675e401af5c5a4_b.jpg& data-rawwidth=&634& data-rawheight=&669& class=&origin_image zh-lightbox-thumb& width=&634& data-original=&/697f36b675e401af5c5a4_r.jpg&&&br&&br&&p&所以,瑟曦裸体游街这场戏,丝毫不三俗。如果你还没有看,请务必要去看看。如果已经看了,但当时一不留神心态三俗了点儿,那不妨回过头再看一遍。这是一场即便妈妈在旁边,也可以放心大胆看的裸戏——当然,如果你真这样干了,请一定要让我们知道。&br&&/p&&img src=&/ff8c01d90acf41c376f45f7_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/ff8c01d90acf41c376f45f7_r.jpg&&&br&&p&安个利:更多权力的游戏和美剧相关文章,请关注我的公号“&b&墙不住的美剧迷&/b&”(ID: unwalled),或者试试直接扫开始几张图片里的二维码,据说可以扫出来。。。&/p&&br&&p&&a href=&///?target=http%3A///r/YHWpsXbErCvTrTLS9yBy& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/r/YHWpsXb&/span&&span class=&invisible&&ErCvTrTLS9yBy&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&
借题主的问题,我来贴贴之前写的“瑟曦的裸戏是否有必要”一文。 瑟曦全裸游街,是《权力的游戏》第五季最受全球影迷关注的桥段。对于黄暴成性的HBO来说,让演员裸个体并不是什么值得一惊一乍的事。 但这场裸戏很特殊。瑟曦之裸,并不三俗。它不是一场普通…
建议你跟着世界一流高校的一门课学习,而不要去看ng 的公开课。&br&stanford 一门ee xxx, machine learning,据说效果很好&br&berkeley有cs 289 A/B 供您选择&br&mit 想必也是有的&br&cmu 想必也是有的&br&&br&这些课程都有网络版&br&&br&教材的话,楼上有人说了,elements of statistical learning (esl)。这个说的高屋建瓴,适合数学基础好的人看;另外一本书是introduction to statistical learning with R。这个说的很实际,适合入门理解。&br&实际上书都写得很好,问题是你有多想学。你把他们都好好学会了,获得学校里面科班的训练,那你绝对比知乎上99%的半吊子水平要高了。剩下的就是学一学软件。&br&亚洲的精英教育鼓励大家追究刁钻的细节,却不清楚一门学问里最基本的普世的动机。却不知道,入门最基本的就是了解这个动机。刁钻的技术细节,一个理解动机的人很容易就能看懂&br&&br&另附cs 289A 的内容大纲:&br&&br&&ul&&li&Introduction: applications, methods, concepts&/li&&li&Good Machine Learning hygiene: test/training/validation, overfitting&/li&&li&Linear classification&/li&&ul&&li&&b&&i&Perceptron&/i&&/b& algorithm&/li&&li&Support vector machines (&b&&i&SVMs&/i&&/b&)&/li&&/ul&&li&Statistical learning background&/li&&ul&&li&D Bayes risk&/li&&li&Probabilistic models vs no model&/li&&li&Generative and discriminative models&/li&&li&Controlling complexity: regularization, bias-variance trade-off, priors.&/li&&li&Resampling, cross-validation.&/li&&li&The multivariate normal distribution.&/li&&/ul&&li&Linear regression&/li&&ul&&li&&b&&i&Least squares&/i&&/b&&/li&&li&Regularization: &b&&i&ridge regression, lasso&/i&&/b&&/li&&/ul&&li&Brief primer on optimization&/li&&li&Linear Classification, revisited&/li&&ul&&li&&b&&i&Logistic regression&/i&&/b&&/li&&li&&b&&i&Linear Discriminant Analysis&/i&&/b&&/li&&li&Support vector machines revisited&/li&&ul&&li&Algorithms&/li&&li&&b&&i&The kernel trick&/i&&/b&&/li&&/ul&&/ul&&li&Theoretical analysis of machine learning problems and algorithms&/li&&ul&&li&General VC dimension&/li&&/ul&&li&Nearest neighbor methods&/li&&ul&&li&&b&&i&k-nearest-neighbor&/i&&/b&&/li&&li&Properties of high-dimensional spaces&/li&&li&Distance learning&/li&&li&Efficient indexing and retrieval methods&/li&&/ul&&li&Decision trees&/li&&ul&&li&&i&&b&Classification and regression trees&/b&&/i&&/li&&li&Random Forests&/li&&li&&i&&b&Boosting&/b&&/i&&/li&&/ul&&li&Neural networks&/li&&ul&&li&&i&&b&Multilayer perceptrons&/b&&/i&&/li&&li&Variations such as convolutional nets&/li&&li&Applications&/li&&/ul&&li&Unsupervised methods&/li&&ul&&li&&i&&b&Clustering&/b&&/i&&/li&&li&Density estimation&/li&&li&Dimensionality reduction&/li&&/ul&&li&Applications in &i&&b&Data Mining&/b&&/i&&/li&&ul&&li&Collaborative filtering&/li&&li&The power and the peril of Big Data &/li&&/ul&&/ul&
建议你跟着世界一流高校的一门课学习,而不要去看ng 的公开课。 stanford 一门ee xxx, machine learning,据说效果很好 berkeley有cs 289 A/B 供您选择 mit 想必也是有的 cmu 想必也是有的 这些课程都有网络版 教材的话,楼上有人说了,elements of statis…
这问题太厉害了。如果题主不是有所涉猎,那真是学术直觉太好了。&br&这个问题贯穿了之前上过一门名叫“attention & awareness&的课,而这节课内容有二十个课时。一旦展开就涵盖了认知神经学中意识的神经机制(neural correlates of consciousness,简称NCC), 注意力,感知三个重要分支的内容,所以不祈求一个回答能清楚解答这个问题了,&br&先抛几个目前心理学 认知神经学中现有证据能够得出的结论(之所以说是目前,是因为这个领域进展很快,有可能第二天就出来个实验推翻现有结论了)。只回答视觉方面的意识、感知和注意力,希望有大神补充。&br&&br&&b&1. 感知(perception) 的出现不需要意识(consciousness)存在。&/b&&br&简单形容是,你的眼睛&看见&了,但你&看不到&。人脑(主要是对应各个感觉的初级皮层)可以因感知到刺激物而变得活跃,但这样的感知可以是自动的、无意识的,也就是不被人所察觉的。但由于大脑皮层的活跃,无意识的感知影响人未来短时间内的相关行为。这方面的研究比较成熟,主要手段是priming, masking&br&&br&&b&2. &/b&&b&知觉负载 (&/b&&b&Perceptual load)影响你能有意识感知到(&/b&&b&consciously perceive )&/b&&b&的范围。&/b&&br&人只有在低知觉负载(low load)的情况下会意识到注意力以外的内容。在高知觉负载(high load)的情况下,也就是需要应付的任务比较难、环境复杂的条件下,人的意识仅限于注意力导向的范围。&br&主要见Lavie的perceptual load theory和相关实验&br&&br&&b&3. 注意力(attention)可以独立于意识(consciousness)存在,也同时说明单单注意力自身不足以实现意识。&/b&&br&这方面的证据来源于在人没有产生意识的情况下,注意力仍然能够单独运作。比如说Blindsight (盲视)的病人,因为大脑初级视觉皮层(V1)受损,视觉信号无法传递,他们“看不到”任何东西(无意识),但当一个他们表示“看不到”的提示出现,将他们的注意力导到一个地点,他们能更迅速地对那个地点的目标作出反应 (Kentridge et al. 2004)。&br&&br&&b&人“看不见”的信息可以吸引并引导注意力。&/b&Jiang et al. (2006) 的实验非常好玩,总所周知,色情图片会吸引人注意力,于是他们把一堆情色裸照渲染到人看不清、意识不到图片内容是什么的程度(被试回答不出图片内容)。但就算人们看不见,当裸照在左边闪了一下时,人对接下来出现在左边的目标反应就加快了速度,表示他们的注意力事先被吸引到了左边,普通照片则没产生这个效果。更好玩的是“看不见”的裸女的照片只吸引直男的注意力,对gay男和异性恋女性无效。在异性恋者当中,只有异性的“看不见”的裸照才能吸引到注意力,产生以上描述的促进反应。&br&&img src=&/75ef8109ecccafe0a6dfd_b.jpg& data-rawwidth=&702& data-rawheight=&248& class=&origin_image zh-lightbox-thumb& width=&702& data-original=&/75ef8109ecccafe0a6dfd_r.jpg&&&br&图片来源:Jiang et al. (2006)&br&&br&&b&注意力也可以调节“看不见”的信息所引发的大脑活动。&/b&Bahrami et al., (2007)用CFS (大致是短暂地给一只眼睛看刺激物X,同时不停地用光闪另一只眼睛,导致人意识不到看到了X,所以神经层面上,X是“隐形”的)抑制意识的产生,然后改变注意力的负载(attentional load)。他们发现隐形的X引发的初级视觉皮层(V1) 活动随着注意力负载的改变而变化。&br&&br&&b&4. &/b&&u&&b&目前&/b&&/u&&b&没有足够有力的证据指出任何意识的出现可以不需要注意力。也就是说,意识依附于注意力。&/b&&br&这时目前比较有争议的领域。对意识的神经关联 (neural correlates of consciousness)的研究发现人产生意识时,大脑额叶(frontal lobe)和顶叶(parietal lobe)这两个负责调控注意力的区域总是活跃的。&br&研究NCC的心理学家、神经学家一直试图找出意识可以独立于注意力存在的证据,但异常地难。最接近的有Li et al. (2002) 的&对一个场景主旨的意识可以&u&几乎&/u&不需要注意力& (&gist perception can exsit in the &u&near absence &/u&of attention&), 后来很多人用不同实验设置复制,又被很多人证伪。&br&最终还是Cohen et al. (2012) 说的好,大意是这样的,“如果想要得出意识不需要注意力的结论,我们需要拿出持之以恒的证据说明意识能够不受多种操纵注意力的实验设置影响,仅仅一个实验,一种设置的例子是远远不够的。” (If these stimuli can truly be consciously
perceived without attention, they should be systematically
unaffected by multiple attentional paradigms. However, a
thorough analysis reveals that none of these categories
meets the standard of converging tests. That is, although
they may escape attentional load in one test, they fail to
reach awareness when tested by another attentional paradigm. & (Cohen et al., ))&br&&p&目前并没有证据达到足以说明意识不需要注意力的标准,所以注意力是产生意识的必要条件。 &/p&&p&(“With no empirical evidence yet meeting the criteria of
awareness without attention, we argue that attention is
necessary for awareness”(Cohen et al., ))&/p&&br&&br&回到题主问题,感知,注意力和意识是不是对应脑子里不同的区域呢?&br&是,和不是。&br&&br&目前研究所能得到的是,视觉感知主要对应位于腹侧通路(ventral pathway)的初级视觉皮层,注意力主要受控于背侧通路 (dorsal pathway)的脑额叶和顶叶(Fronto-parietal attention network),所以这两者大概虽互有交集但可以在神经层面分开。&br&而意识的神经机制(NCC)=感知 (对应primary sensory cortex)+注意力(对应Frontoparietal cortex),缺少任何一者都不可。&br&&br&------&br&&p&如果对这个问题有兴趣 以下文献综述集合了最新的成果:&/p&&br&&p&知觉负载,注意力和意识:Attention, Distraction and Cognitive Control Under Load (Lavie, 2010)&/p&&p&注意力和意识可以分开吗: The Attentional Requirements of Consciousness (Cohen et al. 2012)&br&&/p&&p&意识的神经机制:Neural Correlates of Consciousness (Rees, 2013)&/p&
这问题太厉害了。如果题主不是有所涉猎,那真是学术直觉太好了。 这个问题贯穿了之前上过一门名叫“attention & awareness"的课,而这节课内容有二十个课时。一旦展开就涵盖了认知神经学中意识的神经机制(neural correlates of consciousness,简称NCC), …
在很多情况下,是不构成盗版的。&br&比如在家里偷偷摸摸地一个人看。&br&&br&&blockquote&第二十二条 在下列情况下使用作品,可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名、作品名称,并且不得侵犯著作权人依照本法享有的其他权利:  &br&
(一)为个人学习、研究或者欣赏,使用他人已经发表的作品;&br&  (二)为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品;&br&  (三)为报道时事新闻,在报纸、期刊、广播电台、电视台等媒体中不可避免地再现或者引用已经发表的作品;&br&  (四)报纸、期刊、广播电台、电视台等媒体刊登或者播放其他报纸、期刊、广播电台、电视台等媒体已经发表的关于政治、经济、宗教问题的时事性文章,但作者声明不许刊登、播放的除外;&br&  (五)报纸、期刊、广播电台、电视台等媒体刊登或者播放在公众集会上发表的讲话,但作者声明不许刊登、播放的除外;&br&  (六)为学校课堂教学或者科学研究,翻译或者少量复制已经发表的作品,供教学或者科研人员使用,但不得出版发行;&br&  (七)国家机关为执行公务在合理范围内使用已经发表的作品;&br&  (八)图书馆、档案馆、纪念馆、博物馆、美术馆等为陈列或者保存版本的需要,复制本馆收藏的作品;&br&  (九)免费表演已经发表的作品,该表演未向公众收取费用,也未向表演者支付报酬;&br&  (十)对设置或者陈列在室外公共场所的艺术作品进行临摹、绘画、摄影、录像;&br&  (十一)将中国公民、法人或者其他组织已经发表的以汉语言文字创作的作品翻译成少数民族语言文字作品在国内出版发行;&br&  (十二)将已经发表的作品改成盲文出版。&br&  前款规定适用于对出版者、表演者、录音录像制作者、广播电台、电视台的权利的限制。&/blockquote&
在很多情况下,是不构成盗版的。 比如在家里偷偷摸摸地一个人看。 第二十二条 在下列情况下使用作品,可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名、作品名称,并且不得侵犯著作权人依照本法享有的其他权利: (一)为个人学习、研究或者欣赏…
发现很多邀请,来回答一下。之前回答过类似的问题,但是现在发现找不到了。以Facebook为重点来说明,其他的三个公司都差不多。&br&&br&&b&先具体回答楼主问题&/b&&br&&br&1. 他们的涨薪方式是怎么样的呢?&br&每6个月一次绩效评定(Performance review),按照review结果给员工打一个评级:&br&a. does &br&b. me&br&c. (10-15% bonus)&br&d. (1.25 * (10-15%) bonus)&br&e. greatly (2 * (10-15%) bonus) &br&f. redefine
(3 * (10-15%) bonus)&br&上面每个等级决定你这6个月的 奖金(bonus),注意只是奖金,而薪水的调整只在年底进行。但是也有例外:如果这次review你升职了,则薪水马上涨到下一个级别。&br&上面的具体系数是Facebook的,其他公司类似但略有差别。一般Google的cash bonus水平最高(因为公司cash多嘛),Facebook次之,Amazon和LinkedIn最次。&br&最后每次年底还有一次追加股票,一般来说是你薪水的10%左右,考虑到股票后续的增值,实际价值可能更多。&br&注意:FLAG四大是使用 奖金+涨薪+追加股票,这三者一起来激励员工。&br&&br&2. 一年平均能够涨多少呢?&br&如果是表现正常,每次都达标(这个其实不简单),但是却没有惊艳的表现,则每年是10%-15%左右的涨幅,奖金也差不多在10-15%左右。一般3个review之后可以得到升职,则当年涨幅可以达到20+%。这样的人一般是1.5-3年升职一次,越到后面升级越难;&br&如果此人特别牛逼,每次表现都exceeds或者greatly exceeds,则每年轻轻松松20+%,升职那年30%+(还不算股票追加)。这的人一般1-2年升职一次。&br&&br&3. 如何做才能快速涨薪?&br&看你属于什么等级,一般对于刚进入FLAG工作的人来说,前三年要表现好的方法:&br&a. 狂写代码;干活快;能把需要做的事情快速做出来;(deliver rate 高)&br&b. 代码质量逐年提高;所在的代码在整个项目的比重越来越大;(也就是说不要老炒冷饭)&br&c. 勤奋,干活时间长(这是最简单最不值得夸耀的一项)&br&上面三点大家都会做,特别是中国人很擅长。但是下面的这几点就是很多中国人忽视或者不擅长的了:&br&1. 狂干的时候,每几个星期停下来思考:看自己干的东西是不是组里或者公司里的top priority work,或者至少也要确保自己干的东西对组和公司有影响力的。也就是说:不要为了忙碌而忙碌,或者说不要干伪工作(pseudo work);&br&2. Be open and friendly(我不翻译了):把自己做的东西visualize给整个组,让大家知道你负责这块;同时把总结出来的好的经验积极地share给组里的其他人;组里的人有相关问题时,你要积极帮助。这样逐渐地,你会变成这一方面的 “go-to person”,大家碰到这方面问题,第一时间想到的是来询问你的意见。这个时候你就快要成功了。&br&3. Be responsible and bold:认真,负责,遇到困难问题不怯场,可以死磕到底,将其完成!具体说来就是:“别人或者manager把任务给你,你肯定在答应的时间内给他们一个交待;对于容易可行的任务,保质保时间地完成;对于很难的,积极汇报问题和思考各种应对策略。” 打一个简单比方,你要给你们组或者高层一个感觉:一个类似于足球里面的 梅西 或者 篮球场上的 小皇帝詹姆斯 给人的感觉 --- “把球交给它,它不会随便丢球,可以完成稳定传接和得分任务,有时还可以惊艳地表现一笔。” 工作其实和很多运动项目很像。&br&&br&&b&补充我自己的思考&/b&&br&&br&对于中国人来说,比较忌讳或者应该避免的就是,不要自己埋着头傻干活,也不要等着manager来安排工作,要去表现和去把主动抢活。&br&&br&后来我去思考过一些华人经常会犯的错误(Facebook内部的中国人也讨论过不少),上面三点的本质源于中国和美国的文化差别。中国文化是强调 低调(low-key profile),内敛,兢兢业业;而美国文化强调 主动,交流和一点点地表现(show-off)。另外整个perf review也体现了中美的巨大差别:中国长期以来习惯于分数和工作成果来看,而美国则一直是全方位评价,比如GPA,SAT/GRE,课外活动,他人的推荐信以及公司内的360度评价。华人要多改变自己的思维模式才能适应北美的这一套工作模式和文化体系。&br&&br&(附带一个FLAG等硅谷公司的绩效评价过程:&a href=&/question/& class=&internal&&Facebook 是如何做员工年度 review 的?有什么比较有趣值得分享的地方么? - Facebook&/a& )
发现很多邀请,来回答一下。之前回答过类似的问题,但是现在发现找不到了。以Facebook为重点来说明,其他的三个公司都差不多。 先具体回答楼主问题 1. 他们的涨薪方式是怎么样的呢? 每6个月一次绩效评定(Performance review),按照review结果给员工打一…
每天早上我洗澡的时候,都会想象自己五十年后想成为的样子:&br&优雅,时尚,充满人格魅力的老太太。走过无数国家,经历过数种文化的深层熏陶,会讲六七种语言,从不担心没有工作可以做。具有岁月给的从容与睿智,而保持着对一切事物的好奇心。&br&&br&&img src=&/561f0cbaae381_b.jpg& data-rawwidth=&742& data-rawheight=&509& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&/561f0cbaae381_r.jpg&&上图是Linda Rodin.我很喜欢的一位六七十岁还很时尚有范儿的老太太,也是我的手机桌面。&br&&br&为了实现这个形象,每一年的12月31日我都会给自己定下第二年要实现的5个目标,比如考下某个资格证,每周运动两次,把一门语言入门等等。到了当年7月会回顾一下看看实现的进度,然后到了下一个12月31日会总结5个目标的完成程度,并制定下一年的目标。&br&&br&这个问题下很多知友认真给出了提升自己的建议,然而如果&b&你不知道自己想要成为一个什么样的人的话,在我看来遵循那些计划也只不过是人云亦云罢了。&/b&&br&&br&别人说健身好,你便也健身;别人说要多读书,你就去看书;别人写字,你就去开微博;别人背包旅行你也背包旅行,别人泡知乎你也泡知乎,别人去练PUA你也去搭讪妹子。&br&请问你真的知道做了这些,在哪里,如何让自己变得更优质了吗?你健身是减脂还是练肌还是保持健康?你读小说还是诗歌还是达尔文进化论?你练写文字真的能让你对生活中那些不满的地方改善吗?……&br&&br&是的,读书,写字,旅行,健身,这些都是好事,而且听起来多么美好,积极,向上啊!&b&可是你真的需要它们吗????&/b&&br&&br&不知道自己的人生需要什么,不知道自己想成为的样子,这些努力,对不起,只能是浪费青春罢了。&br&&br&要我说,在制定任何的计划之前,你需要的,是变成一个勤于反省,不断认识自己,不断与自己对话的人。&br&&br&“哦,我在这次旅行中过的简直太愉快了,这是日常生活不能给我的。我愉快的原因不是因为风景,而是因为我认识了好多来自各个国家的人。”&br&“对的,我总是能从接触新的文化中获得力量和满足自己的好奇。”&br&“如果我选择一个新的技能,我会选择一门新的语言,因为它们可以打开一整个世界的大门,让我和更多人交流。”&br&“那么我想在30岁之前掌握四门语言。我要先选择一门新的外语,然后用2年左右掌握它。”&br&&br&收集那些不经意间让你打从心底兴奋,充满动力,觉得活着好有意义的东西。思索自己为什么会这样。思索什么让自己沮丧,悲伤。思索自己天生所追求的东西,觉得有魅力的人和事物是什么样的。不需要严格的计划,也不需要和他人比较,你会在属于自己的这个方向越走越远的。&br&&br&我们都应该努力去变得更优质,但是不要让他人定义我们的优质。
每天早上我洗澡的时候,都会想象自己五十年后想成为的样子: 优雅,时尚,充满人格魅力的老太太。走过无数国家,经历过数种文化的深层熏陶,会讲六七种语言,从不担心没有工作可以做。具有岁月给的从容与睿智,而保持着对一切事物的好奇心。 上图是Linda Ro…
这样的题目一定要姑娘来写。太大众的地方人太多,多数的妹子都已去过,比如田子坊,新天地,静安寺,思南路,静安别墅etc.再者,浦东的大多数地方是没有真正的上海味道的,浦西才有。下面我来列举一下。&br&&br&适合牵手散步的马路(这些马路上都是又有创意小店可以看,又有有情调的餐厅可以吃。)比起土豪带着妹子去环金中心吃什么“世纪100”这种地方别致又实惠。&br&1.东平路&br&&img src=&/a7bacb1ff1ecae906f7b115_b.jpg& data-rawwidth=&331& data-rawheight=&220& class=&content_image& width=&331&&&br&2.桃江路&br&&img src=&/ce602b0b9bac5fea586f95_b.jpg& data-rawwidth=&500& data-rawheight=&332& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/ce602b0b9bac5fea586f95_r.jpg&&&br&3.湖南路&br&&img src=&/fab6ae88be69_b.jpg& data-rawwidth=&500& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/fab6ae88be69_r.jpg&&&br&4.奉贤路&br&&img src=&/e421d8d0ded993fcf35f2_b.jpg& data-rawwidth=&852& data-rawheight=&1136& class=&origin_image zh-lightbox-thumb& width=&852& data-original=&/e421d8d0ded993fcf35f2_r.jpg&&&br&5.蒙自东路&br&(需补图)&br&&br&&br&&br&7.岳阳路(中国画院也在那,各种精致小店,闹中取静人很少附带周边的衡山路、巨鹿路,富民路)&br&&img src=&/d5cddee564ac69ce9dc03_b.jpg& data-rawwidth=&690& data-rawheight=&523& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&/d5cddee564ac69ce9dc03_r.jpg&&&br&8 巨鹿路上的“鹿苑”聚集了各种小资餐厅。&br&&img src=&/84e34d8777fbabc2ef4caeb3b6df4d9f_b.jpg& data-rawwidth=&1281& data-rawheight=&860& class=&origin_image zh-lightbox-thumb& width=&1281& data-original=&/84e34d8777fbabc2ef4caeb3b6df4d9f_r.jpg&&&br&9还有绍兴路,有家汉源书店 还可以。适合喜欢各做各事,语言交流较少的情侣&br&&img data-rawheight=&640& data-rawwidth=&640& src=&/c7b6e7e62df21d14fa6099_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/c7b6e7e62df21d14fa6099_r.jpg&&&br&适合去的创意园、美术馆&br&1.1913老洋行 (就在1933老厂房旁边)&br&新开发的地儿,人非常少。周末去也不用担心没有位子坐。&br&&br&2.叠 up美术馆&br&&img data-rawheight=&361& data-rawwidth=&640& src=&/d06134adae42bdfae0246_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/d06134adae42bdfae0246_r.jpg&&&br&3.外滩美术馆&br&&img data-rawheight=&853& data-rawwidth=&640& src=&/f07ee641cfb7ab735da185d88f7e12a3_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/f07ee641cfb7ab735da185d88f7e12a3_r.jpg&&&br&4.上海当代艺术博物馆&br&&img data-rawheight=&853& data-rawwidth=&640& src=&/ca7d856f05cfe4b94a43e24_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/ca7d856f05cfe4b94a43e24_r.jpg&&&br&&br&&br&&br&&br&&br&夜排挡还是去掉吧,适合和哥们把酒当歌,不适合女朋友的。&br&&br&先这样吧,图后面再补
这样的题目一定要姑娘来写。太大众的地方人太多,多数的妹子都已去过,比如田子坊,新天地,静安寺,思南路,静安别墅etc.再者,浦东的大多数地方是没有真正的上海味道的,浦西才有。下面我来列举一下。 适合牵手散步的马路(这些马路上都是又有创意小店可…
sizeof的东西会被编译器直接替换掉,即使是汇编代码都只能看到一个常量,所以下面有童鞋说看反汇编源码是不行的,因为已经在编译器内部替换掉了(更严谨的说法是,VLA是特殊情况,这是后面的代码说明中有提到)。下面以Clang对sizeof的处理来看sizeof的实现。&br&&br&在Clang的实现中,在lib/AST/ExprConstant.cpp中有这样的方法:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&kt&&bool&/span& &span class=&n&&IntExprEvaluator&/span&&span class=&o&&::&/span&&span class=&n&&VisitUnaryExprOrTypeTraitExpr&/span&
&/code&&/pre&&/div&&br&这个方法的实现如此:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&k&&switch&/span&&span class=&p&&(&/span&&span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&getKind&/span&&span class=&p&&())&/span& &span class=&p&&{&/span&
&span class=&k&&case&/span& &span class=&nl&&UETT_AlignOf&/span&&span class=&p&&:&/span& &span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&isArgumentType&/span&&span class=&p&&())&/span&
&span class=&k&&return&/span& &span class=&n&&Success&/span&&span class=&p&&(&/span&&span class=&n&&GetAlignOfType&/span&&span class=&p&&(&/span&&span class=&n&&Info&/span&&span class=&p&&,&/span& &span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&getArgumentType&/span&&span class=&p&&()),&/span& &span class=&n&&E&/span&&span class=&p&&);&/span&
&span class=&k&&else&/span&
&span class=&k&&return&/span& &span class=&nf&&Success&/span&&span class=&p&&(&/span&&span class=&n&&GetAlignOfExpr&/span&&span class=&p&&(&/span&&span class=&n&&Info&/span&&span class=&p&&,&/span& &span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&getArgumentExpr&/span&&span class=&p&&()),&/span& &span class=&n&&E&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&case&/span& &span class=&nl&&UETT_VecStep&/span&&span class=&p&&:&/span& &span class=&p&&{&/span&
&span class=&n&&QualType&/span& &span class=&n&&Ty&/span& &span class=&o&&=&/span& &span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&getTypeOfArgument&/span&&span class=&p&&();&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&Ty&/span&&span class=&o&&-&&/span&&span class=&n&&isVectorType&/span&&span class=&p&&())&/span& &span class=&p&&{&/span&
&span class=&kt&&unsigned&/span& &span class=&n&&n&/span& &span class=&o&&=&/span& &span class=&n&&Ty&/span&&span class=&o&&-&&/span&&span class=&n&&castAs&/span&&span class=&o&&&&/span&&span class=&n&&VectorType&/span&&span class=&o&&&&/span&&span class=&p&&()&/span&&span class=&o&&-&&/span&&span class=&n&&getNumElements&/span&&span class=&p&&();&/span&
&span class=&c1&&// The vec_step built-in functions that take a 3-component&/span&
&span class=&c1&&// vector return 4. (OpenCL 1.1 spec 6.11.12)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&n&/span& &span class=&o&&==&/span& &span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&n&&n&/span& &span class=&o&&=&/span& &span class=&mi&&4&/span&&span class=&p&&;&/span&
&span class=&k&&return&/span& &span class=&nf&&Success&/span&&span class=&p&&(&/span&&span class=&n&&n&/span&&span class=&p&&,&/span& &span class=&n&&E&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span& &span class=&k&&else&/span&
&span class=&k&&return&/span& &span class=&n&&Success&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&n&&E&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&case&/span& &span class=&nl&&UETT_SizeOf&/span&&span class=&p&&:&/span& &span class=&p&&{&/span&
&span class=&n&&QualType&/span& &span class=&n&&SrcTy&/span& &span class=&o&&=&/span& &span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&getTypeOfArgument&/span&&span class=&p&&();&/span&
&span class=&c1&&// C++ [expr.sizeof]p2: &When applied to a reference or a reference type,&/span&
&span class=&c1&&//
the result is the size of the referenced type.&&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&k&&const&/span& &span class=&n&&ReferenceType&/span& &span class=&o&&*&/span&&span class=&n&&Ref&/span& &span class=&o&&=&/span& &span class=&n&&SrcTy&/span&&span class=&o&&-&&/span&&span class=&n&&getAs&/span&&span class=&o&&&&/span&&span class=&n&&ReferenceType&/span&&span class=&o&&&&/span&&span class=&p&&())&/span&
&span class=&n&&SrcTy&/span& &span class=&o&&=&/span& &span class=&n&&Ref&/span&&span class=&o&&-&&/span&&span class=&n&&getPointeeType&/span&&span class=&p&&();&/span&
&span class=&n&&CharUnits&/span& &span class=&n&&Sizeof&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&o&&!&/span&&span class=&n&&HandleSizeof&/span&&span class=&p&&(&/span&&span class=&n&&Info&/span&&span class=&p&&,&/span& &span class=&n&&E&/span&&span class=&o&&-&&/span&&span class=&n&&getExprLoc&/span&&span class=&p&&(),&/span& &span class=&n&&SrcTy&/span&&span class=&p&&,&/span& &span class=&n&&Sizeof&/span&&span class=&p&&))&/span&
&span class=&k&&return&/span& &span class=&nb&&false&/span&&span class=&p&&;&/span&
&span class=&k&&return&/span& &span class=&nf&&Success&/span&&span class=&p&&(&/span&&span class=&n&&Sizeof&/span&&span class=&p&&,&/span& &span class=&n&&E&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&n&&llvm_unreachable&/span&&span class=&p&&(&/span&&span class=&s&&&unknown expr/type trait&&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&然后通过这个方法,我们可以顺藤摸瓜,发现sizeof的处理其实是在HandleSizeof这个方法内,结果是会存储在Sizeof这个CharUnits中,而一个CharUnits是Clang内部的一个表示,引用Clang的注释如下&br&&div class=&highlight&&&pre&&code class=&language-c&&
&span class=&c1&&/// CharUnits - This is an opaque type for sizes expressed in character units.&/span&
&span class=&c1&&/// Instances of this type represent a quantity as a multiple of the size&/span&
&span class=&c1&&/// of the standard C type, char, on the target architecture. As an opaque&/span&
&span class=&c1&&/// type, CharUnits protects you from accidentally combining operations on&/span&
&span class=&c1&&/// quantities in bit units and character units.&/span&
&span class=&c1&&///&/span&
&span class=&c1&&/// In both C and C++, an object of type 'char', 'signed char', or 'unsigned&/span&
&span class=&c1&&/// char' occupies exactly one byte, so 'character unit' and 'byte' refer to&/span&
&span class=&c1&&/// the same quantity of storage. However, we use the term 'character unit'&/span&
&span class=&c1&&/// rather than 'byte' to avoid an implication that a character unit is&/span&
&span class=&c1&&/// exactly 8 bits.&/span&
&span class=&c1&&///&/span&
&span class=&c1&&/// For portability, never assume that a target character is 8 bits wide. Use&/span&
&span class=&c1&&/// CharUnit values wherever you calculate sizes, offsets, or alignments&/span&
&span class=&c1&&/// in character units.&/span&
&/code&&/pre&&/div&&br&然后,我们找寻HandleSizeof方法:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&c1&&/// Get the size of the given type in char units.&/span&
&span class=&k&&static&/span& &span class=&kt&&bool&/span& &span class=&nf&&HandleSizeof&/span&&span class=&p&&(&/span&&span class=&n&&EvalInfo&/span& &span class=&o&&&&/span&&span class=&n&&Info&/span&&span class=&p&&,&/span& &span class=&n&&SourceLocation&/span& &span class=&n&&Loc&/span&&span class=&p&&,&/span&
&span class=&n&&QualType&/span& &span class=&n&&Type&/span&&span class=&p&&,&/span& &span class=&n&&CharUnits&/span& &span class=&o&&&&/span&&span class=&n&&Size&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// sizeof(void), __alignof__(void), sizeof(function) = 1 as a gcc&/span&
&span class=&c1&&// extension.&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&Type&/span&&span class=&o&&-&&/span&&span class=&n&&isVoidType&/span&&span class=&p&&()&/span& &span class=&o&&||&/span& &span class=&n&&Type&/span&&span class=&o&&-&&/span&&span class=&n&&isFunctionType&/span&&span class=&p&&())&/span& &span class=&p&&{&/span&
&span class=&n&&Size&/span& &span class=&o&&=&/span& &span class=&n&&CharUnits&/span&&span class=&o&&::&/span&&span class=&n&&One&/span&&span class=&p&&();&/span&
&span class=&k&&return&/span& &span class=&nb&&true&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&o&&!&/span&&span class=&n&&Type&/span&&span class=&o&&-&&/span&&span class=&n&&isConstantSizeType&/span&&span class=&p&&())&/span& &span class=&p&&{&/span&
&span class=&c1&&// sizeof(vla) is not a constantexpr: C99 6.5.3.4p2.&/span&
&span class=&c1&&// FIXME: Better diagnostic.&/span&
&span class=&n&&Info&/span&&span class=&p&&.&/span&&span class=&n&&Diag&/span&&span class=&p&&(&/span&&span class=&n&&Loc&/span&&span class=&p&&);&/span&
&span class=&k&&return&/span& &span class=&nb&&false&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&n&&Size&/span& &span class=&o&&=&/span& &span class=&n&&Info&/span&&span class=&p&&.&/span&&span class=&n&&Ctx&/span&&span class=&p&&.&/span&&span class=&n&&getTypeSizeInChars&/span&&span class=&p&&(&/span&&span class=&n&&Type&/span&&span class=&p&&);&/span&
&span class=&k&&return&/span& &span class=&nb&&true&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&走到这里,我们就知道了为什么会被替换掉了,如你这里是void或者Function type,编译器都直接替换为CharUnits::One()这个常量(即一个Char的大小),所以这就是汇编也只能看到常量的原因,毕竟汇编是后面CodeGen的事情,而这里是在CodeGen之前发生的了。而在这里也会判断Type是不是ConstantSizeType,因为需要在编译期计算出来,而注释则是针对VLA,有兴趣的同学可以按照注释的C99地方去看说的是什么。接下来则是把Type传给getTypeSizeInChars方法了。&br&&br&OK,接下来我们再一步一步的走下去,看getTypeSizeInChars做了什么。&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&c1&&/// getTypeSizeInChars - Return the size of the specified type, in characters.&/span&
&span class=&c1&&/// This method does not work on incomplete types.&/span&
&span class=&n&&CharUnits&/span& &span class=&n&&ASTContext&/span&&span class=&o&&::&/span&&span class=&n&&getTypeSizeInChars&/span&&span class=&p&&(&/span&&span class=&n&&QualType&/span& &span class=&n&&T&/span&&span class=&p&&)&/span& &span class=&k&&const&/span& &span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&getTypeInfoInChars&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&).&/span&&span class=&n&&first&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&走到这里的时候,虽然我们就算不走下去都能知道这个方法是返回特定类型的大小了,但是我们还是要打破沙锅问到底,看到底是怎么实现的。于是我们继续走getTypeInfoChars()这个方法。&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&pair&/span&&span class=&o&&&&/span&&span class=&n&&CharUnits&/span&&span class=&p&&,&/span& &span class=&n&&CharUnits&/span&&span class=&o&&&&/span&
&span class=&n&&ASTContext&/span&&span class=&o&&::&/span&&span class=&n&&getTypeInfoInChars&/span&&span class=&p&&(&/span&&span class=&n&&QualType&/span& &span class=&n&&T&/span&&span class=&p&&)&/span& &span class=&k&&const&/span& &span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&getTypeInfoInChars&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&.&/span&&span class=&n&&getTypePtr&/span&&span class=&p&&());&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&走到这里,我们也知道为什么会有first了,因为这个方法返回的是一个std::pair,接下来我们可以发现调用的还是getTypeInChar方法,但是参数一个TypePointers,于是我们找这个重载方法:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&pair&/span&&span class=&o&&&&/span&&span class=&n&&CharUnits&/span&&span class=&p&&,&/span& &span class=&n&&CharUnits&/span&&span class=&o&&&&/span&
&span class=&n&&ASTContext&/span&&span class=&o&&::&/span&&span class=&n&&getTypeInfoInChars&/span&&span class=&p&&(&/span&&span class=&k&&const&/span& &span class=&n&&Type&/span& &span class=&o&&*&/span&&span class=&n&&T&/span&&span class=&p&&)&/span& &span class=&k&&const&/span& &span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&k&&const&/span& &span class=&n&&ConstantArrayType&/span& &span class=&o&&*&/span&&span class=&n&&CAT&/span& &span class=&o&&=&/span& &span class=&n&&dyn_cast&/span&&span class=&o&&&&/span&&span class=&n&&ConstantArrayType&/span&&span class=&o&&&&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&))&/span&
&span class=&k&&return&/span& &span class=&n&&getConstantArrayInfoInChars&/span&&span class=&p&&(&/span&&span class=&o&&*&/span&&span class=&k&&this&/span&&span class=&p&&,&/span& &span class=&n&&CAT&/span&&span class=&p&&);&/span&
&span class=&n&&TypeInfo&/span& &span class=&n&&Info&/span& &span class=&o&&=&/span& &span class=&n&&getTypeInfo&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&);&/span&
&span class=&k&&return&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&make_pair&/span&&span class=&p&&(&/span&&span class=&n&&toCharUnitsFromBits&/span&&span class=&p&&(&/span&&span class=&n&&Info&/span&&span class=&p&&.&/span&&span class=&n&&Width&/span&&span class=&p&&),&/span&
&span class=&n&&toCharUnitsFromBits&/span&&span class=&p&&(&/span&&span class=&n&&Info&/span&&span class=&p&&.&/span&&span class=&n&&Align&/span&&span class=&p&&));&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&随后,我们可以发现是getTypeInfo这个方法,然后我们找到对应的代码:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&n&&TypeInfo&/span& &span class=&n&&ASTContext&/span&&span class=&o&&::&/span&&span class=&n&&getTypeInfo&/span&&span class=&p&&(&/span&&span class=&k&&const&/span& &span class=&n&&Type&/span& &span class=&o&&*&/span&&span class=&n&&T&/span&&span class=&p&&)&/span& &span class=&k&&const&/span& &span class=&p&&{&/span&
&span class=&n&&TypeInfoMap&/span&&span class=&o&&::&/span&&span class=&n&&iterator&/span& &span class=&n&&I&/span& &span class=&o&&=&/span& &span class=&n&&MemoizedTypeInfo&/span&&span class=&p&&.&/span&&span class=&n&&find&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&);&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&I&/span& &span class=&o&&!=&/span& &span class=&n&&MemoizedTypeInfo&/span&&span class=&p&&.&/span&&span class=&n&&end&/span&&span class=&p&&())&/span&
&span class=&k&&return&/span& &span class=&n&&I&/span&&span class=&o&&-&&/span&&span class=&n&&second&/span&&span class=&p&&;&/span&
&span class=&c1&&// This call can invalidate MemoizedTypeInfo[T], so we need a second lookup.&/span&
&span class=&n&&TypeInfo&/span& &span class=&n&&TI&/span& &span class=&o&&=&/span& &span class=&n&&getTypeInfoImpl&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&);&/span&
&span class=&n&&MemoizedTypeInfo&/span&&span class=&p&&[&/span&&span class=&n&&T&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&TI&/span&&span class=&p&&;&/span&
&span class=&k&&return&/span& &span class=&n&&TI&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&然后我们找到了这个,对于MemorizedTypeInfo我们暂时不需要关心,我们也能发现需要的东西其实在getTypeInfoImpl里面&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&c1&&/// getTypeInfoImpl - Return the size of the specified type, in bits.
This&/span&
&span class=&c1&&/// method does not work on incomplete types.&/span&
&span class=&c1&&///&/span&
&span class=&c1&&/// FIXME: Pointers into different addr spaces could have different sizes and&/span&
&span class=&c1&&/// alignment requirements: getPointerInfo should take an AddrSpace, this&/span&
&span class=&c1&&/// should take a QualType, &c.&/span&
&span class=&n&&TypeInfo&/span& &span class=&n&&ASTContext&/span&&span class=&o&&::&/span&&span class=&n&&getTypeInfoImpl&/span&&span class=&p&&(&/span&&span class=&k&&const&/span& &span class=&n&&Type&/span& &span class=&o&&*&/span&&span class=&n&&T&/span&&span class=&p&&)&/span& &span class=&k&&const&/span& &span class=&p&&{&/span&
&span class=&kt&&uint64_t&/span& &span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&kt&&unsigned&/span& &span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&mi&&8&/span&&span class=&p&&;&/span&
&span class=&kt&&bool&/span& &span class=&n&&AlignIsRequired&/span& &span class=&o&&=&/span& &span class=&nb&&false&/span&&span class=&p&&;&/span&
&span class=&k&&switch&/span& &span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&o&&-&&/span&&span class=&n&&getTypeClass&/span&&span class=&p&&())&/span& &span class=&p&&{&/span&
&span class=&cp&&#define TYPE(Class, Base)&/span&
&span class=&cp&&#define ABSTRACT_TYPE(Class, Base)&/span&
&span class=&cp&&#define NON_CANONICAL_TYPE(Class, Base)&/span&
&span class=&cp&&#define DEPENDENT_TYPE(Class, Base) case Type::Class:&/span&
&span class=&cp&&#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base)
&span class=&cp&&
case Type::Class:
&span class=&cp&&
assert(!T-&isDependentType() && &should not see dependent types here&);
&span class=&cp&&
return getTypeInfo(cast&Class##Type&(T)-&desugar().getTypePtr());&/span&
&span class=&cp&&#include &clang/AST/TypeNodes.def&&/span&
&span class=&n&&llvm_unreachable&/span&&span class=&p&&(&/span&&span class=&s&&&Should not see dependent types&&/span&&span class=&p&&);&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&FunctionNoProto&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&FunctionProto&/span&&span class=&p&&:&/span&
&span class=&c1&&// GCC extension: alignof(function) = 32 bits&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&mi&&32&/span&&span class=&p&&;&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&IncompleteArray&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&VariableArray&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&getTypeAlign&/span&&span class=&p&&(&/span&&span class=&n&&cast&/span&&span class=&o&&&&/span&&span class=&n&&ArrayType&/span&&span class=&o&&&&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&)&/span&&span class=&o&&-&&/span&&span class=&n&&getElementType&/span&&span class=&p&&());&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&ConstantArray&/span&&span class=&p&&:&/span& &span class=&p&&{&/span&
&span class=&k&&const&/span& &span class=&n&&ConstantArrayType&/span& &span class=&o&&*&/span&&span class=&n&&CAT&/span& &span class=&o&&=&/span& &span class=&n&&cast&/span&&span class=&o&&&&/span&&span class=&n&&ConstantArrayType&/span&&span class=&o&&&&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&);&/span&
&span class=&n&&TypeInfo&/span& &span class=&n&&EltInfo&/span& &span class=&o&&=&/span& &span class=&n&&getTypeInfo&/span&&span class=&p&&(&/span&&span class=&n&&CAT&/span&&span class=&o&&-&&/span&&span class=&n&&getElementType&/span&&span class=&p&&());&/span&
&span class=&kt&&uint64_t&/span& &span class=&n&&Size&/span& &span class=&o&&=&/span& &span class=&n&&CAT&/span&&span class=&o&&-&&/span&&span class=&n&&getSize&/span&&span class=&p&&().&/span&&span class=&n&&getZExtValue&/span&&span class=&p&&();&/span&
&span class=&n&&assert&/span&&span class=&p&&((&/span&&span class=&n&&Size&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span& &span class=&o&&||&/span& &span class=&n&&EltInfo&/span&&span class=&p&&.&/span&&span class=&n&&Width&/span& &span class=&o&&&=&/span& &span class=&p&&(&/span&&span class=&kt&&uint64_t&/span&&span class=&p&&)(&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&n&&Size&/span&&span class=&p&&)&/span& &span class=&o&&&&&/span&
&span class=&s&&&Overflow in array type bit size evaluation&&/span&&span class=&p&&);&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&EltInfo&/span&&span class=&p&&.&/span&&span class=&n&&Width&/span& &span class=&o&&*&/span& &span class=&n&&Size&/span&&span class=&p&&;&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&EltInfo&/span&&span class=&p&&.&/span&&span class=&n&&Align&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&o&&!&/span&&span class=&n&&getTargetInfo&/span&&span class=&p&&().&/span&&span class=&n&&getCXXABI&/span&&span class=&p&&().&/span&&span class=&n&&isMicrosoft&/span&&span class=&p&&()&/span& &span class=&o&&||&/span&
&span class=&n&&getTargetInfo&/span&&span class=&p&&().&/span&&span class=&n&&getPointerWidth&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span& &span class=&o&&==&/span& &span class=&mi&&64&/span&&span class=&p&&)&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&llvm&/span&&span class=&o&&::&/span&&span class=&n&&RoundUpToAlignment&/span&&span class=&p&&(&/span&&span class=&n&&Width&/span&&span class=&p&&,&/span& &span class=&n&&Align&/span&&span class=&p&&);&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&ExtVector&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&Vector&/span&&span class=&p&&:&/span& &span class=&p&&{&/span&
&span class=&k&&const&/span& &span class=&n&&VectorType&/span& &span class=&o&&*&/span&&span class=&n&&VT&/span& &span class=&o&&=&/span& &span class=&n&&cast&/span&&span class=&o&&&&/span&&span class=&n&&VectorType&/span&&span class=&o&&&&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&);&/span&
&span class=&n&&TypeInfo&/span& &span class=&n&&EltInfo&/span& &span class=&o&&=&/span& &span class=&n&&getTypeInfo&/span&&span class=&p&&(&/span&&span class=&n&&VT&/span&&span class=&o&&-&&/span&&span class=&n&&getElementType&/span&&span class=&p&&());&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&EltInfo&/span&&span class=&p&&.&/span&&span class=&n&&Width&/span& &span class=&o&&*&/span& &span class=&n&&VT&/span&&span class=&o&&-&&/span&&span class=&n&&getNumElements&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Width&/span&&span class=&p&&;&/span&
&span class=&c1&&// If the alignment is not a power of 2, round up to the next power of 2.&/span&
&span class=&c1&&// This happens for non-power-of-2 length vectors.&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&Align&/span& &span class=&o&&&&/span& &span class=&p&&(&/span&&span class=&n&&Align&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&))&/span& &span class=&p&&{&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&llvm&/span&&span class=&o&&::&/span&&span class=&n&&NextPowerOf2&/span&&span class=&p&&(&/span&&span class=&n&&Align&/span&&span class=&p&&);&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&llvm&/span&&span class=&o&&::&/span&&span class=&n&&RoundUpToAlignment&/span&&span class=&p&&(&/span&&span class=&n&&Width&/span&&span class=&p&&,&/span& &span class=&n&&Align&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&c1&&// Adjust the alignment based on the target max.&/span&
&span class=&kt&&uint64_t&/span& &span class=&n&&TargetVectorAlign&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getMaxVectorAlign&/span&&span class=&p&&();&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&TargetVectorAlign&/span& &span class=&o&&&&&/span& &span class=&n&&TargetVectorAlign&/span& &span class=&o&&&&/span& &span class=&n&&Align&/span&&span class=&p&&)&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&TargetVectorAlign&/span&&span class=&p&&;&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&case&/span& &span class=&n&&Type&/span&&span class=&o&&::&/span&&span class=&nl&&Builtin&/span&&span class=&p&&:&/span&
&span class=&k&&switch&/span& &span class=&p&&(&/span&&span class=&n&&cast&/span&&span class=&o&&&&/span&&span class=&n&&BuiltinType&/span&&span class=&o&&&&/span&&span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&)&/span&&span class=&o&&-&&/span&&span class=&n&&getKind&/span&&span class=&p&&())&/span& &span class=&p&&{&/span&
&span class=&k&&default&/span&&span class=&o&&:&/span& &span class=&n&&llvm_unreachable&/span&&span class=&p&&(&/span&&span class=&s&&&Unknown builtin type!&&/span&&span class=&p&&);&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Void&/span&&span class=&p&&:&/span&
&span class=&c1&&// GCC extension: alignof(void) = 8 bits.&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&mi&&8&/span&&span class=&p&&;&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Bool&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getBoolWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getBoolAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Char_S&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Char_U&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&UChar&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&SChar&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getCharWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getCharAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&WChar_S&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&WChar_U&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getWCharWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getWCharAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Char16&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getChar16Width&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getChar16Align&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Char32&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getChar32Width&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getChar32Align&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&UShort&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Short&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getShortWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getShortAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&UInt&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Int&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getIntWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getIntAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&ULong&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Long&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getLongWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getLongAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&ULongLong&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&LongLong&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getLongLongWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getLongLongAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Int128&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&UInt128&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&mi&&128&/span&&span class=&p&&;&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&mi&&128&/span&&span class=&p&&;&/span& &span class=&c1&&// int128_t is 128-bit aligned on all targets.&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Half&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getHalfWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getHalfAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Float&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getFloatWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getFloatAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&Double&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getDoubleWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getDoubleAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&LongDouble&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getLongDoubleWidth&/span&&span class=&p&&();&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getLongDoubleAlign&/span&&span class=&p&&();&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&NullPtr&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getPointerWidth&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span& &span class=&c1&&// C++ 3.9.1p11: sizeof(nullptr_t)&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getPointerAlign&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span& &span class=&c1&&//
== sizeof(void*)&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&ObjCId&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&ObjCClass&/span&&span class=&p&&:&/span&
&span class=&k&&case&/span& &span class=&n&&BuiltinType&/span&&span class=&o&&::&/span&&span class=&nl&&ObjCSel&/span&&span class=&p&&:&/span&
&span class=&n&&Width&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&span class=&o&&-&&/span&&span class=&n&&getPointerWidth&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&n&&Align&/span& &span class=&o&&=&/span& &span class=&n&&Target&/span&&s}

我要回帖

更多关于 物质和意识的辩证关系 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信