2011-01-16 36 views
6

thể trùng lặp:
Are nested functions a bad thing in gcc ?chức năng Xác định trong vòng một hàm trong C

Theo như tôi biết, C không cho phép một hàm phải được xác định trong phạm vi chức năng khác. Nhưng mã sau đây biên dịch và chạy mà không có bất kỳ lỗi nào trong gcc. Ai đó có thể giải thích lý do tại sao? Xem thêm này: http://ideone.com/AazVK

#include <stdio.h> 

void val1(int x) 
{ 
     void sig(int x) { 
       printf("%d\n",x*10); 
     } 
     sig(x); 
} 

int main() 
{  
     void val2(int x) { 
       x = x*10; 
       val1(x); 

       printf("%d\n", x); 
       if (x < 10000) { 
         val2(x);     
       } 
     } 

     val2(20); 

     return 0; 
} 
+1

Nhiều bản sao, ví dụ: http://stackoverflow.com/questions/2929281/are-nested-functions-a-bad-thing-in-gcc –

+2

thêm cờ '-pedantic' để bật chế độ tiêu chuẩn và bạn sẽ nhận được cảnh báo khi sử dụng phần mở rộng gnu – Christoph

Trả lời

Các vấn đề liên quan