1. 問幾個c++調試時的錯誤提示
1.編譯器錯誤 C2447
錯誤消息
「{」: 缺少函數標題(是否是老式的形式表?)
在全局范圍內出現左大括弧,但沒有相應的函數頭。
此錯誤可能由舊式 C 語言格式列表引起。
下面的示例生成 C2447:
// C2447.cpp
int c;
{} // C2447
2. 編譯器錯誤 C2181
錯誤消息
沒有匹配 if 的非法 else
每個 else 都必須具有一個與之相匹配的 if。
下面的示例生成 C2181:
// C2181.cpp
int main() {
int i = 0;
else // C2181
i = 1;
}
可能的解決方案:
// C2181b.cpp
int main() {
int i = 0;
if(i)
i = 0;
else
i = 1;
}
3.編譯器錯誤 C2057
錯誤消息
應輸入常數表達式
上下文要求常數表達式,即其值在編譯時已知的表達式。
示例
下面的示例生成 C2057:
// C2057.cpp
int i;
int b[i]; // C2057
int main() {
const int i = 8;
int b[i];
}
C 對常數表達式有限制性更強的規則。下面的示例生成 C2057:
// C2057b.c
#define ArraySize1 10
int main() {
const int ArraySize2 = 10;
int h[ArraySize2]; // C2057
int h[ArraySize1]; // OK
}
4.編譯器錯誤 C2065
錯誤消息
「identifier」: 未聲明的標識符
在可使用變數的類型前必須在聲明中指定它。在可以使用函數前必須在聲明或原型中指定該函數使用的參數。
可能的原因:
您正在用 C 運行庫的調試版本進行編譯,在 for 循環中聲明標准 C++ 庫迭代器變數,然後嘗試在 for 循環范圍外使用該迭代器變數。 用 C 運行庫的調試版本編譯標准 C++ 庫代碼暗指使用 /Zc:forScope。 有關更多信息,請參見調試迭代器支持。
可能正在調用當前不受生成環境支持的 SDK 頭文件中的函數。
省略必要的包含文件,尤其是在定義 VC_EXTRALEAN、WIN32_LEAN_AND_MEAN 或 WIN32_EXTRA_LEAN 時。這些符號從 windows.h 和 afxv_w32.h 中排除了一些頭文件以加快編譯。(在 windows.h 和 afxv_w32.h 中查找排除的頭文件的最新說明。)
標識符名拼寫錯誤。
標識符使用了錯誤的大小寫字母。
字元串常數的後面缺少右引號。
命名空間范圍不正確。例如,若要解析 ANSI C++ 標准庫函數和運算符,則必須用 using 指令指定 std 命名空間。下面的示例未能編譯,因為 using 指令被注釋掉,並且在 std 命名空間中定義了 cout:
2. C語言代碼運行不出為什麼
C語言代碼運行不出現象可能有很多原因,以下是一些常見的原因和解決方法:
編譯錯誤:代碼中存在語法錯誤或類型錯誤,導致編譯失敗。可以通過編譯器的錯誤提示信息來定位錯誤,逐一修正後重新編譯。
運行錯誤:代碼編譯成功,但在運行時出現錯誤,如數塵棚旦組越界、空指針、除零等錯誤。可以通過調試工具或列印調試信息等方和喚法來定位錯誤。
缺少庫文件或頭文件:代碼中使用了某些庫函數或頭文件,但是編譯器無法找到相應的庫文件或頭文件,導致編譯失敗。可以檢查編譯器的搜索路徑是否正確,或手動添加缺失的庫文件或頭文件。
環境問題:代碼在不同的操作系統、編譯器或硬體平台上可能存在差異,導致代碼無法正常運行。可以檢查編譯器和操作系統的兼容性,或在特定的環境中運行代碼。
邏輯問題:代碼邏輯存在問題,導致代碼無法正確執行。可以檢查代碼邏輯是否正確,是否存在死循環、遞歸深度過大等問題。
綜上,C語言代碼運行不出現象可能有多種原因,需要逐一排查解決。可以利用編譯器和調試工具來定位問題,或參考其他人的代碼或文派擾檔來解決問題。
3. c語言運行到一半出現error是怎麼回事呢
C語言程序運行出現exe停止工作的原因是因為內存溢出和編譯器錯誤。
第一種:內存溢出
內存溢出(out of memory)通俗理解就是內存不夠,程序所需要的內存遠遠超出了主機內安裝的內存所承受大小,就叫內存溢出。系統會提示內存溢出,有時候會自動關閉軟體,重啟電腦或者軟體後釋放掉一部分內存又可以正常運行該軟體。
第二種:編譯器錯誤
部分編譯器由於所使用的標准不同(例如在一台機器上使用的可能是C99標准,而另一台機器上使用的是C11標准),或是因為編譯器鏈接庫的損壞,在少數情況下也可能導致程序出現不限於崩潰退出的異常錯誤,通常解決方法是到編譯器官方網站下載最新版的IDE安裝。
舉例說明:
1、除以零。
2、數組越界:int a[3]; a[10000000]=10。
3、指針越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10。
4、使用已經釋放的空間:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10。
5、數組開得太大,超出了棧的范圍,造成棧溢出:int a[100000000],沒有開辟內存 List L=(List)malloc(sizeof(struct LNode))。runtimeerror(運行時錯誤)就是程序運行到一半,程序就崩潰了。
(3)編譯器錯誤c2562擴展閱讀:
C特有特點:
1、C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2、C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3、不同的變數類型可以用結構體(struct)組合在一起。
4、只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5、部份的變數類型可以轉換,例如整型和字元型變數。
6、通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7、預編譯處理(preprocessor)讓C語言的編譯更具有彈性。