Указание структуры в сигнатуре функции - PullRequest
5 голосов
/ 08 сентября 2011

Скажите, у меня есть

struct mystruct
{
};

Есть ли разница между:

void foo(struct mystruct x){}

и

void foo(mystruct x){}

Ответы [ 3 ]

11 голосов
/ 08 сентября 2011

В С последний не действителен.

Однако в C ++ они почти одинаковы: первый будет действительным, если вы еще не объявили свою структуру, он будет восприниматься как предварительное объявление параметра все в одном.

7 голосов
/ 08 сентября 2011

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

struct mystruct
{
};

void mystruct() {}

void foo(struct mystruct x){} // compiles
void foo(mystruct x){} // doesn't - for compatibility with C "mystruct" means the function

Итак, не определяйте функцию с тем же именем, что и у класса.

3 голосов
/ 08 сентября 2011

Без разницы. Последний является правильным синтаксисом C ++; первое допустимо как устаревший вариант для восстановления программистов на Си.

Обратите внимание, что struct и class по сути одинаковы и оба определяют класс, поэтому в C ++ нет особой обработки для структур POD в стиле C.

[ Редактировать: Очевидно, что это небольшая разница, см. Отличный ответ Марка Б.]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...