任何人都可以告訴我,我們可以在用戶定義的函數中聲明一個函數嗎?如C中的嵌套函數?
int sum(int x, int y)
{
int fun(float x);
}
我們可以在函數內部定義一個函數嗎?據我所知,我們不能在函數內部定義函數。
但我只是做了這一點,它的做工精細的代碼如下:
{
int main()
{
func1();
return 0;
}
func1()
{
int i = 0;
auto func2()
{
i = 10;
printf("Heloo i am func 2\n");
}
printf("Heloo i am func 1\n");
func2();
}
}
它工作得很好。
現在誰能告訴我一個函數中的函數是如何定義或正常工作的?
任何人都可以向我解釋爲什麼代碼工作?
現在,當我改變的代碼,它給我下面的問題 幾行的變化如下:
代碼:
{
func1()
{
func2();
int i = 0;
auto func2()
{
i = 10;
printf("Heloo i am func 2\n");
}
printf("Heloo i am func 1\n");
}
錯誤:
error: static declaration of ‘func2’ follows non-static declaration
note: previous implicit declaration of ‘func2’ was here
現在這些是什麼錯誤他們爲什麼要來?
如果我打電話func2()
在main
功能比它會顯示類似 undefined reference to func2
錯誤現在誰能告訴我這裏有什麼問題?
方式太多問號...... – 2011-05-23 10:19:16
應該指出的是,這是否允許只是一種語言書呆子的好奇心。在現實世界的應用程序中,您絕不會在其他函數中寫入聲明或定義。 – Lundin 2011-05-23 11:23:54