2011-10-18 25 views
10

Tôi có một hàm luôn trả về một cấu trúc có giá trị đã biết. Cú pháp là gì?Làm thế nào để trả về một cấu trúc chữ phức hợp

struct MyStruct Function(void) 
{ 
    return (struct MyStruct){1,2,3}; 
} 

Tôi nhận được một lỗi biên dịch trên dòng trở lại:
Lỗi: lỗi cú pháp

Bất kỳ ý tưởng? Tôi đang sử dụng một trình biên dịch chéo cho một mục tiêu được nhúng, vì vậy nó có thể là trình biên dịch của tôi.


Sửa
Đó là trình biên dịch của tôi. Như cnicutar đã nhận xét, đó là mã C99 hợp lệ.

Một số người đã chỉ ra rằng tôi có thể tạo biến. Mục tiêu của tôi là tránh tạo ra một biến chỉ để trả lại nó.

+8

Đó là trình biên dịch. C99 hỗ trợ điều này một cách hoàn hảo. – cnicutar

+0

Làm thế nào về C++? (GCC C++? Có một switch?) – imacake

+0

@imacake Câu hỏi là về C, nhưng tôi cho rằng G ++ hỗ trợ nó theo mặc định? – YoYoYonnY

Trả lời

0

Cách hiển nhiên sẽ là để tạo ra một biến kiểu thích hợp:

struct MyStruct Function(void) { 
    struct MyStruct ret = {1,2,3}; 
    return ret; 
} 
4

Dường như bạn đang cố gắng để đúc một initializer như một struct :-)

Đây không phải là hợp lệ cú pháp. Hãy thử một cái gì đó như:

struct MyStruct Function(void) 
{ 
    struct MyStruct s = {1,2,3}; 
    return s; 
} 

Nhưng nó sẽ là tốt hơn để hiển thị MyStruct được khai báo như thế nào một cách chính xác, chỉ trong trường hợp.

+1

Không, OP không truyền bất cứ điều gì, nhưng trả về một chữ kép. Nhưng đây là một tính năng C99 mà dường như không phổ biến. – cnicutar

+0

@cnicutar Tôi chỉ đùa thôi. Làm thế nào tôi có thể đặt một dòng trên văn bản của tôi? Tôi muốn làm xước phần mà tôi nói về cú pháp không hợp lệ. C99 lừa tôi. – sidyll

+0

Tôi đã chỉnh sửa cho bạn. – cnicutar

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