[問題] Namespace的用法問題
開發平台:Xcode7.2
小弟最近開始接觸到namespace這個東西。由於對它不是很了解,只從書上大概了解他的
語法,我假設他的寫法跟class一樣是在.h做declaration 然後在.cpp做implementation
我看到很多書或是網站也都是這樣寫。但是我在.h對變數做宣告的時候,假如不加上
extern或static這兩個修飾詞的話都會出現編譯錯誤:duplicate symbol for
architecture x86_64
想請教一下為什麼會這樣?他跟class之間有什麼差別嗎?除了不能實體化之外。或著說
在compile時候compiler處理他跟處理class是什麼不同的方式啊。
ex:
__________Supplement.h____________
#ifndef Supplement_hpp
#define Supplement_hpp
#include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
namespace MyNameSpace {
int i;
}
#endif /*Supplement_hpp */
_____________main.cpp______________
#include <stdlib.h>
#include "Supplement.hpp"
using namespace std;
int main(int argc, const char * argv[]) {
cout << MyNameSpace::i << endl;
}
上面這樣就會出現編譯錯誤。必須要把 int i 改成 extern int i才不會出現錯誤。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.30.40
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1455012377.A.BDD.html
推
02/09 18:15, , 1F
02/09 18:15, 1F
→
02/09 18:15, , 2F
02/09 18:15, 2F
→
02/09 18:16, , 3F
02/09 18:16, 3F
→
02/09 18:17, , 4F
02/09 18:17, 4F
→
02/09 18:29, , 5F
02/09 18:29, 5F
→
02/09 18:30, , 6F
02/09 18:30, 6F
→
02/09 18:35, , 7F
02/09 18:35, 7F
→
02/09 18:37, , 8F
02/09 18:37, 8F
→
02/09 18:38, , 9F
02/09 18:38, 9F
→
02/09 18:38, , 10F
02/09 18:38, 10F
推
02/09 19:43, , 11F
02/09 19:43, 11F
→
02/09 19:44, , 12F
02/09 19:44, 12F
→
02/09 19:44, , 13F
02/09 19:44, 13F
→
02/09 19:45, , 14F
02/09 19:45, 14F
→
02/09 19:46, , 15F
02/09 19:46, 15F
推
02/09 21:26, , 16F
02/09 21:26, 16F
→
02/09 21:27, , 17F
02/09 21:27, 17F
→
02/09 21:27, , 18F
02/09 21:27, 18F
→
02/09 21:27, , 19F
02/09 21:27, 19F
→
02/09 21:27, , 20F
02/09 21:27, 20F
→
02/09 21:35, , 21F
02/09 21:35, 21F
→
02/09 21:35, , 22F
02/09 21:35, 22F
→
02/09 21:35, , 23F
02/09 21:35, 23F
→
02/09 21:36, , 24F
02/09 21:36, 24F
→
02/09 21:36, , 25F
02/09 21:36, 25F
→
02/09 23:42, , 26F
02/09 23:42, 26F
→
02/10 01:41, , 27F
02/10 01:41, 27F
→
02/10 01:51, , 28F
02/10 01:51, 28F
推
02/10 01:54, , 29F
02/10 01:54, 29F
→
02/10 01:54, , 30F
02/10 01:54, 30F
推
02/10 02:09, , 31F
02/10 02:09, 31F
→
02/10 02:09, , 32F
02/10 02:09, 32F
→
02/10 02:09, , 33F
02/10 02:09, 33F
→
02/10 02:09, , 34F
02/10 02:09, 34F
→
02/10 02:09, , 35F
02/10 02:09, 35F
→
02/10 02:10, , 36F
02/10 02:10, 36F
→
02/10 23:27, , 37F
02/10 23:27, 37F
→
02/10 23:28, , 38F
02/10 23:28, 38F
推
02/10 23:54, , 39F
02/10 23:54, 39F