Как вернуть составную литеральную структуру - PullRequest
12 голосов
/ 18 октября 2011

У меня есть функция, которая всегда будет возвращать структуру с известными значениями.Какой синтаксис?

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

Я получаю сообщение об ошибке компилятора в обратной строке:
Ошибка: ошибка синтаксиса

Есть идеи?Я использую кросс-компилятор для встроенной цели, так что это может быть мой компилятор.


Edit
Это мой компилятор.Как прокомментировал cnicutar, это действительный код C99.

Некоторые люди указали, что я могу создать переменную.Моя цель состояла в том, чтобы избежать создания переменной просто для ее возврата.

Ответы [ 2 ]

5 голосов
/ 18 октября 2011

Похоже, вы пытаетесь привести инициализатор как структуру: -)

Это неверный синтаксис. Попробуйте что-то вроде:

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

Но было бы лучше показать, как именно объявляется MyStruct, на всякий случай.

0 голосов
/ 18 октября 2011

Очевидным способом было бы создать переменную соответствующего типа:

struct MyStruct Function(void) { 
    struct MyStruct ret = {1,2,3};
    return ret;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...