青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 662250
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11074)
2.?SVN中邪惡的replace(11000)
3.?VS2005編譯libevent(10456)
4.?混音算法的學習與研究(10258)
5.?C調用lua腳本的效率測試(9025)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
"multiple definition of" 錯誤
"multiple definition of" 錯誤
在global.h定義了一個常量字符串,在多個cpp中包含該global.h.
// file: global.h
#ifndef GLOBAL_H
#define GLOBAL_H
const char * STR_TEST = "Hello world!";
#endif
結果鏈接時出現錯誤:
multiple definition of ‘STR_TEST’
雖然改為#define肯定行,但是盡量應該用const量取代宏定義。
這里有個概念性錯誤。
const 變量默認是 static 的,
但帶有 const 的不一定是 const 變量.
此處 STR_TEST 并不是常量,而是指向常量字符串的變量。
改為
const char * const STR_TEST = "Hello world!";
就可以了。
不過我又覺得改為
const char STR_TEST[] = "Hello world!"
更好。
posted on 2008-08-26 20:12
金慶
閱讀(11074)
評論(18)
編輯
收藏
引用
所屬分類:
1. C/C++
評論
#
re: "multiple definition of" 錯誤
2008-08-27 00:33
TheAnswer
const char * const STR_TEST = "Hello world!";
前面那個const可以去掉的 效果一樣的
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 08:59
Kevin Lynx
概念性問題而已。
const int a = 12; 表示a 是個常量
const char * STR_TEST = "Hello world!";表示STR_TEST指向的內容是常量,但其本身(作為一個指針變量而言)不是一個常量。
所以:
char * const STR_TEST = ".." 即可
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 09:09
金慶
@TheAnswer
char * const STR_TEST = "Hello world!";
STR_TEST[0] = 'X';
會通過編譯,所以不能去掉前面的const.
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 09:48
raof01
const 變量默認是 static 的?誰說的?
multiple definition并不是由其constness不正確而導致的。
char * const p = "....";(p為常量,存放在常量表中,鏈接時沒問題)或者static char * p = "....";(限制p的作用域為編譯單元,但p可修改)即可,因為字符串本身是字面常量,不能修改。
因此,你這里的錯誤是由于全局變量使用錯誤導致的,與const無關。按照你最初的定義,在多個cpp中包含該global.h就相當于多次定義了STR_TEST。因此鏈接時會出錯。
const char STR_TEST[] = "Hello world!";這里有個拷貝操作,相當于多用了一倍的空間。
建議你看看“C++:一些基礎知識”(
http://blog.chinaunix.net/u/12783/showart_548200.html
)3和4條
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 10:28
abettor
加了
#ifndef GLOBAL_H
#define GLOBAL_H
#endif
還出現重復定義?不解中……
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 10:29
theanswerzju
@金慶
會有運行時錯誤的這位大哥
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 10:30
theanswerzju
@abettor
這個防護宏只能防止一個cpp里重復包含
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 10:56
komac
文章內容有誤導性,定義一個常量在多個文件中使用如果是定義在頭文件中就會出現multi definition的錯誤,只需要把你想用的變量定義在cpp文件里面,然后在h文件里面用external關鍵字聲明即可。出現多次定義的原因是多次包含,雖然用了ifndef define endif 也不可以避免在多個不想干文件里面包含該頭文件所產生的錯誤。
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 10:57
raof01
@abettor,@theanswerzju
IMHO,你們對于變量的定義理解存在問題。參考“C/C++:如何理解復雜的聲明”(
http://blog.chinaunix.net/u/12783/showart_378340.html
)。
變量定義一次就分配一次存儲。多次包含global.h,則多次為STR_TEST分配空間。編譯器正常是因為分開編譯。鏈接異常是因為有多個存儲叫做STR_TEST,通過STR_TEST引用存儲存在二義性。
而且inclusion guard是防止一個h被重復包含,而不是在一個cpp里重復包含。最基礎的書籍關于這點也是很清楚的。
與inclusion guard無關。
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 10:58
raof01
@komac
你沒有理解博主的意思。
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 10:59
raof01
OMG!看了這么多留言才知道,只有kevin lynx和博主——當然也包括本人——知道討論的是什么問題。
IMHO,其他人該好好鞏固一下基礎了。
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 13:23
金慶
@raof01
看了你的文章,很好,學到了 bitwise constant.
const char STR_TEST[] = "Hello world!";
確實多用了空間, 看來還是用 const char * const 好,這樣只需復制指針。
const 變量默認是 static,應該是C++標準說的吧。不然我的代碼就會編譯出錯。
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 13:43
raof01
@金慶
c++標準哪里有?把原話貼過來啊。
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 13:46
raof01
考慮這種情況:
void foo()
{
int const a = 10;
a++;
}
如果const默認是static,那么上面的函數應該等價于:
void foo()
{
static int a = 10;
a++;
}
可能嗎?
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-27 13:49
raof01
考慮這種情況:
void foo()
{
int const a = 10;
}
如果const默認是static,那么上面的函數應該等價于:
void foo()
{
static int a = 10;
}
可能嗎?
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 19:02
金慶
@raof01
更準確的說法可能是:C++中const默認為內部鏈接的。
我本來不甚了了,現在查了C++標準終于清楚了。
C++ 2003 標準下載自:
http://d.download.csdn.net/down/167339/i2005reg
原文如下:
Annex C
3.5
Change: A name of file scope that is explicitly declared const, and not explicitly declared extern, has internal linkage, while in C it would have external linkage
Rationale: Because const objects can be used as compile-time values in C + +, this feature urges programmers to provide explicit initializer values for each const. This feature allows the user to put const objects in header files that are included in many compilation units.
回復
更多評論
#
re: "multiple definition of" 錯誤
2008-08-27 21:18
komac
@金慶
This feature allows the user to put const objects in header files that are included in many compilation units.
的確無知了,不知道const還有這個用法,慚愧慚愧
回復
更多評論
#
re: "multiple definition of" 錯誤[未登錄]
2008-08-28 09:24
raof01
看來我的理解也不夠深刻……
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內存錯誤
std::thread 中的異常會丟失調用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美精品免费在线观看
|
一区二区黄色
|
亚洲中无吗在线
|
亚洲欧美成人
|
亚洲欧美国产视频
|
亚洲欧美清纯在线制服
|
欧美一级久久久
|
久久免费国产精品
|
欧美国产成人在线
|
亚洲另类春色国产
|
亚洲一区二区三区四区视频
|
欧美尤物巨大精品爽
|
久久一区中文字幕
|
欧美日韩三级
|
99精品视频免费观看
|
亚洲图片自拍偷拍
|
亚洲一二三区视频在线观看
|
欧美一区2区视频在线观看
|
亚洲国产精品久久精品怡红院
|
免费成人激情视频
|
亚洲精品孕妇
|
欧美中文字幕不卡
|
欧美精品一区二区视频
|
国产精品日韩精品欧美精品
|
在线观看国产成人av片
|
国产精品99久久久久久白浆小说
|
性做久久久久久
|
欧美激情片在线观看
|
亚洲网站在线看
|
美女久久一区
|
国产午夜精品久久久久久久
|
亚洲美女av网站
|
麻豆精品传媒视频
|
亚洲视频一区二区在线观看
|
国产精品99免视看9
|
国产视频一区二区三区在线观看
|
亚洲区免费影片
|
久久久噜久噜久久综合
|
在线中文字幕日韩
|
欧美精品三区
|
亚洲国产精品日韩
|
久久国产精品久久久
|
亚洲激情在线视频
|
性欧美xxxx大乳国产app
|
欧美日韩一区在线
|
91久久久亚洲精品
|
麻豆91精品91久久久的内涵
|
香蕉乱码成人久久天堂爱免费
|
欧美一区高清
|
欧美成人免费在线
|
久久成人免费
|
国产欧美精品在线
|
亚洲欧美日韩中文在线制服
|
日韩午夜电影在线观看
|
欧美大秀在线观看
|
亚洲理论电影网
|
欧美激情在线播放
|
另类综合日韩欧美亚洲
|
黑人巨大精品欧美黑白配亚洲
|
亚洲欧美日韩一区二区
|
一本久久青青
|
国产精品免费区二区三区观看
|
一本色道久久88综合日韩精品
|
国产精品国产三级国产普通话三级
|
欧美一区二区三区久久精品茉莉花
|
99精品免费
|
亚洲国产成人精品久久
|
久久男人av资源网站
|
在线观看一区欧美
|
欧美激情亚洲另类
|
亚洲人成免费
|
欧美日韩精品一区二区在线播放
|
亚洲免费精彩视频
|
99天天综合性
|
国产精品视频免费观看www
|
久久爱www.
|
久久亚洲精品视频
|
99国产精品久久
|
亚洲毛片av在线
|
国产精品乱码一区二区三区
|
午夜精品三级视频福利
|
欧美亚洲免费电影
|
亚洲电影免费在线观看
|
91久久嫩草影院一区二区
|
欧美精品在线免费播放
|
亚洲午夜伦理
|
欧美一区二区在线免费观看
|
狠狠网亚洲精品
|
亚洲国产日韩欧美
|
国产精品二区影院
|
久久免费国产精品1
|
久久综合伊人77777麻豆
|
亚洲精品一二
|
欧美极品在线播放
|
在线视频欧美日韩精品
|
亚洲男女自偷自拍图片另类
|
国内外成人免费激情在线视频
|
久久在线免费观看视频
|
欧美理论在线播放
|
欧美一区二区三区精品电影
|
狼人天天伊人久久
|
香蕉久久国产
|
欧美电影在线免费观看网站
|
篠田优中文在线播放第一区
|
嫩草国产精品入口
|
欧美在线二区
|
欧美日韩欧美一区二区
|
嫩草伊人久久精品少妇av杨幂
|
国产精品成人一区二区三区夜夜夜
|
一本大道久久a久久综合婷婷
|
亚洲视频精品
|
亚洲精品综合精品自拍
|
亚洲欧美一区二区精品久久久
|
久久久久久久波多野高潮日日
|
欧美激情视频在线播放
|
蜜臀久久99精品久久久久久9
|
欧美视频在线免费看
|
久久夜精品va视频免费观看
|
欧美午夜大胆人体
|
亚洲国产精品一区二区第一页
|
国产女人精品视频
|
夜夜嗨av色一区二区不卡
|
亚洲欧洲综合另类
|
久久久av毛片精品
|
久久久精品999
|
国产精品日韩精品欧美精品
|
亚洲精品中文字幕在线观看
|
亚洲欧洲另类
|
久久久久久噜噜噜久久久精品
|
羞羞视频在线观看欧美
|
欧美日韩在线播放三区四区
|
亚洲国产女人aaa毛片在线
|
精品福利免费观看
|
久久米奇亚洲
|
欧美成ee人免费视频
|
亚洲成人在线视频网站
|
久久久久国产精品一区
|
久久一区二区三区四区
|
好吊色欧美一区二区三区视频
|
久久激情综合网
|
蜜臀久久久99精品久久久久久
|
国内自拍一区
|
蜜桃av一区二区在线观看
|
欧美激情精品久久久久久蜜臀
|
艳女tv在线观看国产一区
|
欧美区亚洲区
|
一区二区日韩
|
亚洲欧美卡通另类91av
|
国产精品永久入口久久久
|
欧美一区免费视频
|
欧美福利一区二区
|
在线视频你懂得一区二区三区
|
欧美日韩在线电影
|
性欧美大战久久久久久久久
|
久久久另类综合
|
亚洲精品黄色
|
国产精品久久久一区二区
|
午夜欧美精品久久久久久久
|
老色鬼精品视频在线观看播放
|
亚洲人成网站精品片在线观看
|
亚洲一区免费网站
|
国产欧美在线视频
|
开心色5月久久精品
|
亚洲欧洲精品一区二区精品久久久
|
亚洲视频在线视频
|
国产一区二区三区在线观看精品
|
国产一区二区精品在线观看
|
久久国产夜色精品鲁鲁99
|
91久久线看在观草草青青
|
亚洲自拍三区
|
亚洲黑丝一区二区
|
国产精品婷婷
|
欧美91视频
|
亚洲欧美三级伦理
|
亚洲电影免费在线
|
国产精品分类
|
久久精品国产999大香线蕉
|
欧美激情一区二区三区高清视频
|
亚洲一区日韩在线
|
美女精品视频一区
|
亚洲综合日本
|
亚洲国产高清视频
|
国产精品视频一区二区高潮
|
免费视频最近日韩
|
欧美一级理论片
|
亚洲最黄网站
|
亚洲黄色一区
|
久久综合狠狠综合久久综青草
|
亚洲午夜国产一区99re久久
|
亚洲国产精品久久久
|
国产精品自拍在线
|
欧美日本在线播放
|
噜噜噜噜噜久久久久久91
|
性亚洲最疯狂xxxx高清
|
亚洲一二三区视频在线观看
|
亚洲精品欧美日韩专区
|
欧美国产视频日韩
|
久久综合色一综合色88
|
久久久久久一区二区
|
欧美在线观看视频
|