看板 C_and_CPP 關於我們 聯絡資訊
想問個基本的問題,c++裡面有namespace std可以使用,也就是說裡面有很多涵式已經 被命名了,所以如果有用到std裡面涵式的名稱都要自己再重新定義一個namespace ,那想請問,c語言裡面有namespace的觀念嗎?因為我如果用一個c++函式的swap() 可以不用自己寫,使用std內的涵式就可以編譯,但是若用c的include<stdio.h>就不能執行了,是代表 c沒有swap()這些已經寫好的涵式嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.182.200
wawi:c應該沒有 印象中寫好的swap是用template寫的 11/19 11:48
loveflames:C不支援overloading,不需要namespace啊 11/19 11:52
loveflames:C也沒有泛型,不能像std::swap那樣做 11/19 11:58
manlike:overloading 和 namespace 沒關係~ 11/19 11:59
loveflames:剛剛想到別的地方去了...orz 11/19 12:03
loveme00835:沒有, 沒有的原因是除非編譯器幫你產生各式各樣的swap 11/19 13:10
loveme00835:, 否則寫一個萬用的 swap 是不可辦得到的事, C 語言可 11/19 13:11
loveme00835:以用巨集來辦到這件事情 : http://ppt.cc/TcPO 11/19 13:12
loveme00835:但是這就不是函式呼叫了, 只是做文字替換而已 11/19 13:14
xatier:如果硬要寫萬用swap的話 http://nopaste.csie.org/8cd6c 11/19 15:53
xatier:不過這也只是用巨集來產生各種 type 的 swap函數罷了 11/19 15:54
xatier:C 沒辦法自己定義一個 namespace,不過 C 依然有namespace 11/19 15:56
xatier:的觀念 http://ppt.cc/zMLY 11/19 15:57
loveme00835:樓上第三個 block 的程式碼是錯的 11/19 16:05
stupid0319:http://nopaste.csie.org/b0654 11/19 16:10
xatier:真的耶,應該是型態的問題 11/19 16:11
xatier:他巨集裏用的竟然是 '->' 運算子 而且a.id與b.id也沒給初值 11/19 16:19
xatier:應該是要這樣用吧? http://nopaste.csie.org/e68c7 11/19 16:21
stupid0319:這樣算是萬用的swap嗎http://nopaste.csie.org/02b45 11/21 01:33