[問題] 關於c++ namespace

看板C_and_CPP作者 (Jun)時間15年前 (2010/11/19 11:43), 編輯推噓1(1018)
留言19則, 6人參與, 最新討論串1/1
想問個基本的問題,c++裡面有namespace std可以使用,也就是說裡面有很多涵式已經 被命名了,所以如果有用到std裡面涵式的名稱都要自己再重新定義一個namespace ,那想請問,c語言裡面有namespace的觀念嗎?因為我如果用一個c++函式的swap() 可以不用自己寫,使用std內的涵式就可以編譯,但是若用c的include<stdio.h>就不能執行了,是代表 c沒有swap()這些已經寫好的涵式嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.182.200

11/19 11:48, , 1F
c應該沒有 印象中寫好的swap是用template寫的
11/19 11:48, 1F

11/19 11:52, , 2F
C不支援overloading,不需要namespace啊
11/19 11:52, 2F

11/19 11:58, , 3F
C也沒有泛型,不能像std::swap那樣做
11/19 11:58, 3F

11/19 11:59, , 4F
overloading 和 namespace 沒關係~
11/19 11:59, 4F

11/19 12:03, , 5F
剛剛想到別的地方去了...orz
11/19 12:03, 5F

11/19 13:10, , 6F
沒有, 沒有的原因是除非編譯器幫你產生各式各樣的swap
11/19 13:10, 6F

11/19 13:11, , 7F
, 否則寫一個萬用的 swap 是不可辦得到的事, C 語言可
11/19 13:11, 7F

11/19 13:12, , 8F
以用巨集來辦到這件事情 : http://ppt.cc/TcPO
11/19 13:12, 8F

11/19 13:14, , 9F
但是這就不是函式呼叫了, 只是做文字替換而已
11/19 13:14, 9F

11/19 15:53, , 10F
如果硬要寫萬用swap的話 http://nopaste.csie.org/8cd6c
11/19 15:53, 10F

11/19 15:54, , 11F
不過這也只是用巨集來產生各種 type 的 swap函數罷了
11/19 15:54, 11F

11/19 15:56, , 12F
C 沒辦法自己定義一個 namespace,不過 C 依然有namespace
11/19 15:56, 12F

11/19 15:57, , 13F
11/19 15:57, 13F

11/19 16:05, , 14F
樓上第三個 block 的程式碼是錯的
11/19 16:05, 14F

11/19 16:10, , 15F

11/19 16:11, , 16F
真的耶,應該是型態的問題
11/19 16:11, 16F

11/19 16:19, , 17F
他巨集裏用的竟然是 '->' 運算子 而且a.id與b.id也沒給初值
11/19 16:19, 17F

11/19 16:21, , 18F
應該是要這樣用吧? http://nopaste.csie.org/e68c7
11/19 16:21, 18F

11/21 01:33, , 19F
這樣算是萬用的swap嗎http://nopaste.csie.org/02b45
11/21 01:33, 19F
文章代碼(AID): #1CvV9YFJ (C_and_CPP)