J.S*_*him -1 c forward-declaration
我刚刚意识到当我在C中定义一个函数并使用它时,我可以使用它并稍后定义函数或者定义它并在以后使用它.例如,
int mult (int x, int y)
{
return x * y;
}
int main()
{
int x;
int y;
scanf( "%d", &x );
scanf( "%d", &y );
printf( "The product of your two numbers is %d\n", mult( x, y ) );
}
Run Code Online (Sandbox Code Playgroud)
和
int main()
{
int x;
int y;
scanf( "%d", &x );
scanf( "%d", &y );
printf( "The product of your two numbers is %d\n", mult( x, y ) );
}
int mult (int x, int y)
{
return x * y;
}
Run Code Online (Sandbox Code Playgroud)
两者都会运行得很好.但是,在Python中,第二个代码将失败,因为它需要mult(x,y)在您使用它之前定义并且Python从上到下执行(据我所知).显然,在C中不可能是这种情况,因为第二个运行得很好.那么C代码实际上是如何流动的呢?
Sou*_*osh 13
好吧,严格来说,第二个代码无效C.
它使用编译器的灵活性来允许隐式声明函数,这在C标准中是不允许的.
该C11标准明确提到"前言" 中的排除,
- 第二版的主要变化包括:
...
- 删除隐式函数声明
你必须要么
在编译器中启用警告,编译器应生成一些警告消息以通知您此问题.