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

C語言函數定義語法錯誤:缺少右大括號導致編譯失敗

     編輯:C 語言問答

一個大括號引發的編譯錯誤

錯誤代碼

int fun(int x[], int n) {
    static int sum = 0, i;
    for (i = 0; i < n; i++) sum += x[i];
    return sum;
    // ❌ 缺少右大括號 '}' 結束函數體
main() {  // 被視為 fun 函數體內的標號+語句,語法錯誤
    int a[] = {1,2,3,4,5}, b[] = {6,7,8,9}, s = 0;
    s = fun(a,5) + fun(b,4);
    printf("%d\n", s);
}

編譯器報錯示例 (GCC)

error: expected declaration or statement at end of input
     main() {
     ^~~~
error: expected '}' at end of input

修正版

#include <stdio.h>

int fun(const int x[], int n) {  // const 正確性
    int sum = 0;  // 不用 static!每次調用歸零
    for (int i = 0; i < n; ++i) sum += x[i];
    return sum;
}  // ✅ 這裡必須有右大括號

int main(void) {  // 標準簽名
    int a[] = {1,2,3,4,5}, b[] = {6,7,8,9}, s = 0;
    s = fun(a, 5) + fun(b, 4);
    printf("%d\n", s);  // 輸出 45
    return 0;
}

避坑原則

  1. 括號配對:編寫 { 時**立即寫對應的 }**,再在中間填代碼。
  2. 縮進對齊:良好縮進能直觀看出缺失括號 (現代編輯器自動縮進/高亮匹配)。
  3. 函數不嵌套:C 不支持函數內定義函數 (GNU C 擴展除外),main 不能在 fun 內部。
  4. static 陷阱:累加器 sum **不能用 static**,否則多次調用結果疊加。

編輯器輔助

  • VS Code: 括號自動補全、匹配高亮 (Ctrl+Shift+\)、縮進提示。
  • Visual Studio: 大綱摺疊、括號匹配 (Ctrl+])、錯誤列表即時顯示。
  • CLion/VS: 結構感知、重構安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved