日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 中export 关键字的尴尬处境

發布時間:2024/8/23 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 中export 关键字的尴尬处境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分離編譯模式(Separate Compilation Model)允許在一處翻譯單元(Translation Unit)中定義(define)函數、類型、類對象等,在另一處翻譯單元引用它們。編譯器(Compiler)處理完所有翻譯單元后,鏈接器(Linker)接下來處理所有指向 extern 符號的引用,從而生成單一可執行文件。該模式使得 C++ 代碼編寫得稱心而優雅。

?????? 然而該模式卻馴不服模板(Template)。標準要求編譯器在實例化模板時必須在上下文中可以查看到其定義實體;而反過來,在看到實例化模板之前,編譯器對模板的定義體是不處理的——原因很簡單,編譯器怎么會預先知道 typename 實參是什么呢?因此模板的實例化與定義體必須放到同一翻譯單元中。

?????? 以優雅著稱的 C++ 是不能容忍有此“敗家仔兒”好好活著的。標準 C++ 為此制定了“模板分離編譯模式(Separation Model)”及 export 關鍵字。然而由于 template 語義本身的特殊性使得 export 在表現的時候性能很次。編譯器不得不像 .net 和?Java?所做的那樣,為模板實體生成一個“中間偽代碼(IPC,intermediate pseudo - code)”,使得其它翻譯單元在實例化時可找到定義體;而在遇到實例化時,根據指定的 typename 實參再將此 IPC 重新編譯一遍,從而達到“分離編譯”的目的。因此,該標準受到了幾乎所有知名編譯器供應商的強烈抵制。

?????? 誰支持 export 呢?Comeau C/C++?和 Intel 7.x 編譯器支持。而以“百分百支持 ISO ”著稱的 VS 和 GCC 卻對此視而不見。真不知道這兩大編譯器“百分百支持”的是哪個版本的 ISO。在 VS 2008 中,export 關鍵字在 IDE 中被標藍,表示 VS IDE 認識它,而編譯時,會用警告友情提示你“不支持該關鍵字”,而配套的 MSDN 9 中的 C++ keywords 頁則根本查不到該關鍵字;而在 VS 2010 中,就沒那么客氣了,盡管 IDE 中仍然會將之標藍,但卻會直截了當地報錯。呵呵,難道標藍就表示 VS “百分百支持標準”了么?呵呵……嘿嘿……哈哈哈哈……

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C++ 中export 关键字的尴尬处境的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。