2012-06-13 35 views
6

Nếu cấu trúc chỉ được sử dụng trong một hàm, tôi có thể khai báo nó trong hàm đó không? Tôi có thể làm điều này:Cấu trúc cục bộ trong c

int func() 
{ 
    struct { 
     int a, b; 
    } s; 

    s.a=5; 

    return s.a; 
} 

gcc nghẹt thở, nhưng nó phát ra một lỗi rất lạ mà tôi không thể hiểu được thay vì nói "Rất tiếc, bạn không thể làm điều đó".

+9

Sẽ hữu ích nếu bạn cung cấp thông báo lỗi. – Ryan

+0

@Rayn Tôi vừa thử lại lần nữa để xem liệu tôi có thể gặp lỗi hay không và lần này nó được biên dịch. Đó là một lỗi tìm kiếm rất kỳ lạ đối với một vấn đề cú pháp (đó là một lỗi liên kết với những gì trông giống như một tên C++ bị xé trong đó) – baruch

+0

Không có gì sai với nó. Hãy thử đổi tên mọi thứ; có thể bạn đã va chạm với tên hiện tại. Bạn đang sử dụng trình biên dịch C++? – wildplasser

Trả lời

9

Mã này hoàn toàn hợp lệ C89/C99/C11, đây là cấu trúc không có thẻ và đối tượng có phạm vi chặn. Kiểm tra C99 6.7.2.3p6 để xem mã định danh cho thẻ là tùy chọn.

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