歡迎您光臨本站 註冊首頁

linux C++ 第一個程序

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

今天第一次接觸linux下的C++,按照一本windows下面的C++來做,有不少問題。出現錯誤提示為:
t1.cpp: In function 『int main()』:
t1.cpp:5: 錯誤: 『cout』 在此作用域中尚未聲明
t1.cpp:6: 錯誤: 『cin』 在此作用域中尚未聲明

後來解決了問題。原來在linux下的c++調用系統函數時,要引用這個類所在的空間,就是加一句
using namespace XXXX(類空間名);並且main前不能用void.
修改後的代碼如下:
QUOTE:
#include
using namespace std;
main()
{
char a;
cout << "please input a character:";
cin >> a;
cout << "The character is:" << a;
return 0;
}

別看程序小,裡面東西可不少,請參考下面的摘錄!

問:namespace std都包括什麼呀?我怎麼才能看到它的內容?在載入iostream.h時出現錯誤,說沒有這個文件。於是cout也用不了。但是加上using namespace std后,cout命令正常使用。這是為什麼?

答:先說一下namespace。
namespace是用來定義local class的。如果一個class不在一個namespace里,那它就是global的。但是一但一個class被寫進namespace的定義里,那它就成了那個namespace的local class了。舉個例子。

namespace myExample {
class Node {/* ... */};
}

Node * myNode; // error: 因為Node class不是global

如果想使用Node class,就要先使用這個namespace。

using namespace myExample:Node;
Node * myNode; // works

----------------------------------------------------------------------------------
然後再說namespace std. 所有的C++ Standard Library Class都包含在這個叫std的namespace里。比如,,< iterator>等等。所以當你使用它們其中的class時,需要加入這個語句,using namespace std; 不然編譯器報錯。

注意是兩個不同的東西
是STL庫
是兼容於c的庫
所有STL庫都在std::名空間下
std::cout是裡面的對象
using std 表示用的是std名空間,這時你再用cout就是指向std::cout了
可以這樣寫using std::cout;
可以看看the c++ programming language

引用命名空間應該是:
using namespace
例如:using namespace std;

而引用命名空間中具體事務則應該是:
using
例如:using std::cout;

Q:linux下c++程序,編譯運行有時輸出為亂碼 ?(printf語句)
不知道是何原因?
A: 不要設置LANG為中文

一些精典的linux下編程書籍推薦:
《Unix環境高級編程》(1本),《Unix網路編程》(2本),《TCP/IP詳解》(3本),缺點不適合初學者。

[火星人 ] linux C++ 第一個程序已經有634次圍觀

http://coctec.com/docs/linux/show-post-188972.html