2013-06-27 240 views
4
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] 
} 

我有这些警告,我一直试图摆脱我的代码。 每个警告意味着什么,什么是摆脱它们的最佳方式?这些警告意味着什么C

+1

你可以发布导致警告的代码吗? – Mgetz

+1

您能否提供代码?这些错误非常普遍。 – Lorenz

+0

我认为这些警告来自这个问题的来源:http://stackoverflow.com/q/17346374/694576 – alk

回答

6

它们表示您没有为您的函数声明返回类型,并且在编译器为这些函数添加默认的int返回类型后,您没有使用return语句。声明全部为void,警告消失。

编辑:并且在使用它们之前声明你的函数,也可以在头文件中,或者在它们被调用的代码上面声明。

+1

这些功能在声明之前使用 – Oktalist

+0

@Oktalist:好点,编辑。 –

2

看起来你有一个函数选择(),你没有给出返回类型。 如果您打算为它是无效的声明为:

void choice(); 
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() { 
} 
3

你有一个函数原型,看起来像这样:

choice(); 

在C89,那很好,它会隐含地变成:

int choice(); 

在C99中,您需要显式添加返回类型。它也看起来像你打算它是无效的,所以你会想要:

void choice(); 
0

你在声明它们之前使用函数。包括某些标题可能会丢失。

错误消息说明: 隐式函数声明(仅C和Objective-C) 在声明之前使用函数时发出警告。在C99模式下(-std = c99或-std = gnu99),默认情况下会启用此警告,并通过-pedantic-errors将其设置为错误。此警告也由-Wall启用。