void renderScene (void)
- это способ С сказать "объявить renderScene
как функцию, не имеющую аргументов и не возвращающую значение" . void renderScene()
было бы чем-то другим - это устаревший стиль объявления функции в C, декларирующий, что renderScene
принимает фиксированное, но неопределенное количество параметров.
Другая часть немного странная и отформатирована обманчиво. Отформатированный правильно, он будет читать:
void init();
{
int submenu;
submenu = glutCreateMenu(menuApp);
glutAddMenuEntry("Option A",1);
/* ... */
}
Блок внутри { }
не связан с void init();
. void init();
объявляет функцию с именем init
(это упомянутый выше устаревший стиль объявления функции). Объявление функции - это просто способ сказать компилятору «где-то есть функция, которая называется this, и это ее аргументы и возвращаемое значение». Поскольку функция init
никогда не вызывается, эта строка может быть опущена.
Блок внутри { }
является просто составным оператором. Все, что он делает, это открывает новую область видимости - переменная submenu
имеет область видимости, ограниченную этим блоком.
Также стоит отметить, что объявление void init();
само по себе является анахронизмом - это объявление, которое появляется после кода в том же блоке, что является функцией, добавленной в пересмотре стандарта C на 1999 год, но это объявление без прототип, который, как уже упоминалось, предшествует первоначальному стандарту 1989 г. С.
Также обратите внимание, что объявления функций, которые не находятся в области видимости файла, сами по себе несколько необычны, хотя и абсолютно законны.