簡體   English   中英

失蹤 ; 在“類型”錯誤之前

[英]Missing ; before 'type' error

這是我的代碼的一部分,您知道導致這種丟失的原因嗎? 在“類型”錯誤之前? 當我在main()函數中刪除sort(arr,size)時,它消失了...

#include <stdio.h>

    void sort(int*, int);

    int main() {
        int arr[] = {5, 1, 3, 0, 9};
        int size = sizeof(arr) / sizeof(arr[0]);

        sort(arr, size);

        int i;
        for(i = 0; i < size; i++)
            printf("%d", arr[i]);

        getchar();
        return 0;
    }

    void sort(int *array, int size) {
        // ...
    }

您最有可能使用嚴​​格為C89的編譯器,因此不允許您在同一塊中的未定義代碼之后定義變量。 移動int i; 以上的sort調用,它應該可以再次工作:

int main() {
    int arr[] = {5, 1, 3, 0, 9};
    int size = sizeof(arr) / sizeof(arr[0]);
    int i;

    sort(arr, size);

    for(i = 0; i < size; i++)
        printf("%d", arr[i]);

    getchar();
    return 0;
}

甚至更好的是,如果編譯器支持,請考慮使用C99標准。 這甚至允許您內聯int i ,即像這樣: for(int i = 0; i < size; i++)

如果您使用的是老式C語言,則無法在函數調用后定義變量。

所以做:

#include <stdio.h>

    void sort(int*, int);

    int main() {
        int arr[] = {5, 1, 3, 0, 9};
        int size = sizeof(arr) / sizeof(arr[0]);
        int i;

        sort(arr, size);


        for(i = 0; i < size; i++)
            printf("%d", arr[i]);

        getchar();
        return 0;
    }

    void sort(int *array, int size) {
        // ...
    }

你不能在預C99 C的代碼中間聲明變量將您的int i ; 到塊的開始,靠近變量聲明的其余部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM