Visual C ++ инициализирует агрегаты, встроенные - PullRequest
0 голосов
/ 07 сентября 2011

В g ++ я мог бы сделать это:

struct s
{
    int a, b;
};
void MyFunction(s) { }

int main()
{
    MyFunction((s) { 0, 0 });
    return 0;
}

Однако в Visual Studio это не работает.есть ли способ заставить его работать или какой-то альтернативный синтаксис без создания переменной и ее инициализации (и без добавления конструктора в структуру, поскольку это сделает ее неагрегированной и не сможет инициализироваться в агрегатах)?

1 Ответ

0 голосов
/ 07 сентября 2011

Мой C немного ржавый, но разве вам не приходилось использовать struct s, если вы не typedef так? Примерно так:

struct s
{
    int a, b;
};

void MyFunction(struct s) { }

int main()
{
    MyFunction((struct s) { 0, 0 });
    return 0;
}

или

typedef struct s
{
    int a, b;
} s_t;

void MyFunction(s_t) { }

int main()
{
    MyFunction((s_t) { 0, 0 });
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...