from wiki:
最常見的c++慣常的做法:
#ifdef __cplusplusextern
"c"#endif
這種寫法用於確保下符號是未被c++編譯器名字修飾過的——這種**能使得c++編譯器編譯出的二進位制目標**中的鏈結符號是未經過c++名字修飾過的,就像c編譯器一樣。就像c語言定義是未名字修飾過的一樣,c++編譯器需要防止名字修飾這些識別符號。
例如,c標準字串庫通常包含了類似這樣子的
#ifdef __cplusplusextern
"c"#endif
於是,例如這樣的**
if(strcmp
(argv[
1], "-x")==
0)strcpy
(a, argv[2]
);else
memset
(a, 0, sizeof
(a))
;
就能使用正確的、未經名字修飾過的strcmp和memset。如果沒有使用extern "c",那麼sunpro c++編譯器會產生等價於下面的c**:
if(__1cgstrcmp6fpkc1_i_(argv[1]
,"-x")==
0) __1cgstrcpy6fpcpkc_0_(a, argv[2]
);else
__1cgmemset6fpvii_0_ (a,0,
sizeof
(a))
;
而這些鏈結符號並不存在於c執行庫中(例如
libc)。因此將導致鏈結錯誤。
C 中的 符號
c 中的 符號2005 7 27 allen lee 符號是特殊而又實用的 c 符號。比如它在 string 中的應用。1字元 表示,其後的字串是個 逐字字串 verbatim string 這個說法來自 c primer 中文版 stanley b.lippman,侯捷 陳碩合譯 2對於逐字字串字...
c 中的 符號
看c 那麼久,今天看原始碼 void concatlayer forward gpu const vector bottom,const vector top 竟然懵了,前後誰屬於誰?查下,三種用法 1 表示 域操作符 例 宣告了乙個類a,類a裡宣告了乙個成員函式void f 但沒有在類的宣告裡給出...
C 中的 符號
doctype html public wcdtd xhtml stricten httpwwwworgtrxhtmldtdxhtml strictdtd 符號是特殊而又實用的c 符號。比如它在string中的應用。字元 表示,其後的字串是個 逐字字串 verbatim string 這個說法來自c...