Для удобства обслуживания я предпочитаю синтаксис списка С явно идентифицированными переменными, например:
counter_t counter = {.hour = 10, .min = 30, .sec = 47};
или для возврата в строку, например:
return (struct counter_t){.hour = 10, .min = 30, .sec = 47};
Я могу представить себеСценарий, в котором можно изменить порядок, в котором объявлены переменные, и, если вы явно не идентифицируете свои переменные, вам придется пройти весь код, чтобы исправить порядок переменных.Таким образом, он становится чище и читабельнее. Думаю,
Примечание :
Как сказали @AshleyDuncan и @MM, эта функция была удаленаиз ISO C ++ после C99 https://stackoverflow.com/a/12122261/2770195, но поддерживается в GNU C ++.
Так что пока вы можете сделать это просто отлично:
g++ -std=gnu++11 main.cpp -o main
Это выдаст ошибку, если вы попробуете приведенный выше пример:
# need an example. I was unable to find. Even clang++ supports it. If you know
# one, please suggest an edit
Если вам нужно скомпилироватьс компилятором C ++ с поддержкой ISO C ++ 11 или более поздней версии, который не распознает это расширение GNU, вам, возможно, придется использовать класс с простым конструктором:
// backup workaround
// not cool
class gnuFTW {
public:
int hour;
int min;
int sec;
gnuFTW(int hour, int min, int sec) {
this->hour = hour;
this->min = min;
this->sec = sec;
}
};
int main(int argc, const char * argv[]) {
gnuFTW counter = gnuFTW(10,30,47);
cout << counter.hour << endl;
return 0;
}