1
void bubble (char cList[] ,int size)  {  // This is the line with the error
int swapped;
int p;
for (p = 1; p < size ; p++)
{
    swapped = 0;    /*this is to check if the array is already sorted*/
    int j;
    for(j = 0; j < size - p; j++)
    {
        if(cList[j] > cList[j+1])
        {
            int temp = cList[j];
            cList[j] = cList[j+1];
            cList[j+1] = temp;
            swapped = 1;
        }
    }
    if(!swapped)
        {
        break; /*if it is sorted then stop*/
    }
}
}

これは私のコードのスニペットです。sizeは既に宣言した定数です。cListクライアントの配列です。エラーが発生し続けます:

expected ';', ',' or ')' before numeric constant

なぜこれが起こっているのですか?

4

1 に答える 1

5

size定数として定義されたマクロの場合、たとえば `

#define size 1234

コードは次のようになります。

void bubble (char cList[] ,int 1234)  {  

これが正しいエラー メッセージです。

これを修正するには、引数を削除します。番号が表示される場所はどこでもsize、コンパイル前のプログラムへのテキスト変更として置き換えられます。例えば:

for (p = 1; p < size ; p++)

になる

for (p = 1; p < 1234 ; p++)

ボーナス

括弧内の数値定数は必ず定義してください! それは読むべきです

#define size (1234)

参照: http://en.wikibooks.org/wiki/C_Programming/Preprocessor#.23define

ボーナスボーナス

正当な理由がない限り、Alexey Frunze がコメントで述べているように、実際の定数変数を使用することをお勧めします。検討:

const int size = 1234;
于 2013-04-09T15:21:13.553 に答える