首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言新手常見錯誤:函數名拼寫、迴圈條件與標頭檔缺失

     編輯:程式設計疑難解答

初學 C 語言時,最容易在「看起來對卻跑不出結果」的程式碼前卡住。以下面這段代碼為例,一次暴露了三個經典錯誤:

#include <stdio.h>
void ema(void);
int main(void)
{
    int i = 1;
    while (i ≤ 3)          // 錯誤 1:使用全形 ≤ 而非 <=
    {
        ena();             // 錯誤 2:呼叫 ena() 但定義的是 ema()
        i++;
    }
    printf("Which!");
    return 0;
}
void ema(void)
{
    printf("for\n");
}

錯誤逐一拆解

  1. 全形運算子 ≤:C 編譯器只認 ASCII 字元,≤(U+2264)會被視為無效 token,必須改成 <=。
  2. 函數名拼寫不一致:宣告 ema()、定義 ema(),呼叫卻寫 ena(),連結器會報 undefined reference to 'ena'。改為 ema(); 即可。
  3. 標頭檔寫法:原碼 #include 後空白,應補全 #include <stdio.h>,否則 printf 無宣告會產生警告甚至錯誤。

修正後完整代碼

#include <stdio.h>

void ema(void);

int main(void)
{
    int i = 1;
    while (i <= 3)   // ASCII <=
    {
        ema();       // 與定義一致
        i++;
    }
    printf("Which!");
    return 0;
}

void ema(void)
{
    printf("for\n");
}

避坑小撇步

  • 養成用英文輸入法寫代碼的習慣,杜絕全形符號。
  • 善用 IDE 的「跳轉到定義」功能,呼叫前先確認函數名拼寫。
  • 開啟編譯器警告(-Wall -Wextra 或 MSVC /W4),未宣告函數、隱式宣告都會被攔截。

這三個錯誤幾乎是每位 C 語言初學者的必經之路,記住它們,下次除錯就能事半功倍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved