5
 final code2.c:9:1: warning: implicit declaration of function 'choice' is invalid in C99 [-Wimplicit-function-declaration]
choice();
^
final code2.c:12:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
choice()
^~~~~~
final code2.c:23:1: warning: implicit declaration of function 'wrong' is invalid in C99 [-     Wimplicit-function-declaration]
wrong();
^
final code2.c:25:1: warning: implicit declaration of function 'formula1' is invalid in C99 [-Wimplicit-function-declaration]
formula1();
^
final code2.c:27:1: warning: implicit declaration of function 'formula2' is invalid in C99 [-Wimplicit-function-declaration]
formula2();
^
final code2.c:29:1: warning: implicit declaration of function 'formula3' is invalid in C99 [-Wimplicit-function-declaration]
formula3();
^
final code2.c:30:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
final code2.c:32:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
wrong()
^~~~~
final code2.c:35:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
final code2.c:37:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
formula1()
^~~~~~~~
final code2.c:47:1: warning: implicit declaration of function 'question' is invalid in C99 [-Wimplicit-function-declaration]
question();
^
final code2.c:50:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
final code2.c:52:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
formula2()
^~~~~~~~
 final code2.c:63:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
final code2.c:65:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
formula3()
^~~~~~~~
final code2.c:85:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
final code2.c:87:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
question()
^~~~~~~~
final code2.c:99:1: warning: control reaches end of non-void function [-Wreturn-type]
 } 

コードで取り除こうとしているこれらの警告があります。それぞれの警告は何を意味し、それらを取り除く最善の方法は何ですか?

4

5 に答える 5

3

戻り値の型を指定していない関数 choice() があるようです。無効にする場合は、次のように宣言します。

void choice();
于 2013-06-27T15:32:05.500 に答える
3

次のような関数プロトタイプがあります。

choice();

C89 ではそれで問題なく、暗黙的に次のようになります。

int choice();

C99 では、戻り値の型を明示的に追加する必要があります。また、無効にするつもりであるように見えるので、次のようにする必要があります。

void choice();
于 2013-06-27T15:32:40.767 に答える
1

関数を使用する前に関数を宣言していません。C では、関数を使用する前に関数を宣言する必要があります。通常、宣言はヘッダー ファイルに入れます。

悪い例.c:

void myFunc() {
   // This causes an implicit declaration; myTest() has not yet been defined.
   myTest(); 
}

void myTest() {
}

良い例.c:

void myFunc();
void myTest();

void myFunc() {
   myTest(); 
}

void myTest() {
}
于 2013-06-27T15:32:14.410 に答える
0

宣言する前に関数を使用しています。いくつかのヘッダーを含めて単に欠落している可能性があります。

エラー メッセージの説明: Wiimplicit-function-declaration (C および Objective-C のみ) 関数が宣言される前に使用されるたびに警告を発します。C99 モード (-std=c99 または -std=gnu99) では、この警告はデフォルトで有効になっており、-pedantic-errors によってエラーになります。この警告は、-Wall でも有効になります。

于 2013-06-27T15:34:14.057 に答える