Как вернуть составную литеральную структуру

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

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

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

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


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

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

Ответ 1

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

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

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

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

Ответ 2

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

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