2010-10-23 12:19
4971人閱讀
收藏舉報
c++string
iostream
cmath.h語言
協議分發程式程式在公司機器上編譯執行良好,而我在我的虛擬機器上編譯,卻出下如下錯誤:
msg.cpp:3101: error: 『strcpy』 was not declared in this scope
而且程式中使用的map, queue,list等都能正確使用,唯獨string不能使用。
而且通過#find ./ -name string –print 也能以現在/usr/include/c++/4.4.0目錄下存在string檔案。
如何解決?
分析:#include 在c++中,是指標準化以前的標準c庫中的字char*字串處理函式
#include 中在2023年標準化以後,c++中含的stl的string容器
#include 是在2023年標準化以後,的演變。
總之你記住一句話:與是完全不同的兩個東西。
用歷史來讓你更理解吧!!!
c語言是2023年由美國貝爾實驗室的d.m.ritchie研製成功。c語言的標頭檔案包含格式如下:
#include
#include
#include
20世紀80年代初,bjarne stroustrup博士及其同事在c語言的基礎上成功研發出c++語言。c++是由c發展來的,與c相容,是對c的擴充套件,或者說是c的超集(當時的名稱也不叫c++, 而叫c with class)。因為最初的c++的標頭檔案包含格式自然而然與c保持了一致:
// (標準化以前c庫)
#include
#include
#include
// 標準化以前的標準c++庫
#include
2023年,對c++進行了標準化。在這次行動中,把標準c++庫的元件放在乙個名位std的namespace裡面,同時為了區別c庫,也產生了如下名稱:
// 標準化以後的標準c庫
#include
#include
#include
// 標準化以後的標準c++庫
#include
1995-2023年,出現並開始大量使用標準模板庫stl及boost庫
#include
#include
#include
原文**:
c 前置宣告與標頭檔案引用
優點 1.c 前置宣告,可以節約預處理器的展開時間,也就是在編譯的時候速度是增快了,但是伴隨著很多坑。2.當被前置宣告的類改動後,只需要編譯包含改動類標頭檔案的原始檔,所有使用了前置宣告的原始檔不需要改動 體現1.所有引用testb.h 的其他 cpp檔案不用再去包含 tem a 與 util 這倆...
C 標頭檔案與類的宣告
complex.h 1 防衛式宣告 ifndef complex 告訴編譯器曾經沒有 define complex endif 作用 發展乙個複數,把它放在標頭檔案中,因為很多程式要用到這個標頭檔案,include complex 當第一次include這個標頭檔案後,編譯器就會進入標頭檔案中,並且...
「不完全型別」指在C 中有宣告但又沒有定義的型別
用delete刪除乙個只有宣告但無定義的型別的指標,是危險的。這通常導致無法呼叫析構函式 包括物件本身的析構函式 成員 基類的析構函式 從而洩露資源。示例 引用 class c 在另乙個cpp檔案中定義 c createc 在另乙個cpp檔案中定義 int main 初步分析 型別c沒有被定義,所以...