6.13.5 Функции с квалификаторами const и volatile
Стандарт C явно оставляет поведение квалификаторов типа const и volatile, применённых к функциям, неопределённым; такие конструкции могут возникнуть только при использовании typedef. В качестве расширения GCC определяет такое использование квалификатора const как имеющее то же значение, что и атрибут функции GCC const, а квалификатор volatile — как эквивалентный атрибуту noreturn. Дополнительную информацию см. в разделе Общие атрибуты функций.
Примеры такого использования:
/* Equivalent to: void fatal () __attribute__ ((noreturn)); */ typedef void voidfn (); volatile voidfn fatal; /* Equivalent to: extern int square (int) __attribute__ ((const)); */ typedef int intfn (int); extern const intfn square;
В целом предпочтительнее использовать вместо этого атрибуты функций, поскольку атрибуты явно указывают и назначение кода, и его зависимость от расширения GNU. Кроме того, использование const и volatile таким образом специфично для GNU C и не работает в GNU C++.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Const-and-Volatile-Functions.html