2013-02-17 60 views
-1

我正在使用code :: blocks。我曾經使用turbo C++ 3.0。C++。與code :: blocks ide相關。 「對象沒有在此範圍內聲明」錯誤

我寫了下面的代碼,並得到一個錯誤,是有點不可能的:

#include<iostream> 
#include<conio.h> 

int main() 
{ 
    using namespace std; 

    clrscr(); 

    char name[20]; 

    cout<<"\nEnter your name:"; 

    cin.getline(name,20); 

    cout<<"\nName stored"; 

    clrscr(); 

    cout<<"\nName:"<<name; 

    getch(); 
    return 0; 

} 

它表明清點,CIN和clrscr()在此範圍內未聲明的錯誤。我不明白爲什麼會顯示。

我在Turbo C++ 3.0中運行了相同的代碼,這是我之前使用的編譯器。那裏我沒有這樣的錯誤。請幫助糾正這個錯誤。

請告訴我這裏有什麼問題,爲什麼它不工作。

+2

如果您發佈一個有關錯誤的問題,請隨時包括_actual_錯誤,未經編輯。 – 2013-02-17 08:54:20

+0

試試這個解決方法:[如何清除輸出屏幕在Code :: blocks?](http://stackoverflow.com/questions/7938331/how-to-clear-the-output-screen-in-codeblocks? rq = 1) – 2013-02-17 10:04:24

回答

2

這就是爲什麼人們建議您使用標準庫而不是依賴編譯器特定的API。

TurboC++有<conio.h>這不是一個標準的C++/C頭。

變通:

對於Linux:libconio.h

對於Windows:

#include <conio.h> 
    #define clrscr() system("cls"); 
    #define getch() kbhit() 
+1

Turbo C++是在我們擁有標準庫之前的一段時間,因此它不是一個選項。 – 2013-02-17 10:01:18

+0

但是kbhit不會和getch()做同樣的事情。那我們該做什麼? – IcyFlame 2013-02-20 08:40:40

+0

@IcyFlame我認爲在windows的'conio.h'頭文件中有'getch()'。 – 2013-02-20 08:54:05

1

Conio.h適用於borland編譯器。使用curses.h。 Turbo C++基於Borland編譯器。

MingGw是Code :: blocks的默認編譯器,它基於GNU編譯器。標題將被導入,但大多數功能將不可用。

+0

我的一個假設是,這個錯誤在不使用borland編譯器時很常見。他說他曾經使用Turbo C++,並且我認爲他已經變成了非Borland的東西。 – Gjordis 2013-02-17 09:12:17