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]
}
我有这些警告,我一直在试图摆脱我的代码。 每个警告意味着什么,最好的方法是摆脱它们?
答案 0 :(得分:6)
它们意味着您没有为函数声明返回类型,并且在编译器为这些函数添加了默认return
返回类型后,您没有使用int
语句。将它们全部声明为void
,警告将消失。
编辑:在你使用它们之前声明你的函数,也可以在头文件中,或者在它们被调用的代码之上。
答案 1 :(得分:3)
你有一个如下所示的函数原型:
choice();
在C89中,这很好,它会隐含地变成:
int choice();
在C99中,您需要显式添加返回类型。看起来你似乎也无效,所以你需要:
void choice();
答案 2 :(得分:2)
看起来你有一个你没有给出返回类型的函数选择()。 如果您打算将其声明为无效声明为:
void choice();
答案 3 :(得分:1)
在使用之前,您不会声明您的功能。 C要求您在使用它们之前声明函数。通常,您将声明放在头文件中。
坏example.c:
void myFunc() {
// This causes an implicit declaration; myTest() has not yet been defined.
myTest();
}
void myTest() {
}
好example.c:
void myFunc();
void myTest();
void myFunc() {
myTest();
}
void myTest() {
}
答案 4 :(得分:0)
在声明之前使用的是函数。你可能只是遗漏了一些标题。
错误消息说明: Wimplicit-function-declaration(仅限C和Objective-C) 在声明之前使用函数时发出警告。在C99模式下(-std = c99或-std = gnu99),默认情况下启用此警告,并通过-pedantic-errors将其设置为错误。 -Wall也启用了此警告。