Решил покопаться в исходниках glibc и натолкнулся
на подобные объявления:extern int atoi (__const char *__nptr) __THROW __attribute_pure__;
Что есть __THROW?
И что такое __attribute_pure__?И вообще. Разве можно, с точки зрения синтаксиса, что-то писать
после закрывающей скобки в объявлении функции???
>Решил покопаться в исходниках glibc и натолкнулся
>на подобные объявления:
>
>extern int atoi (__const char *__nptr) __THROW __attribute_pure__;
>
>Что есть __THROW?
>И что такое __attribute_pure__?Это расширения GNU GCC. см. info gcc . Касательно __attribute__ пункт 5.24
>И вообще. Разве можно, с точки зрения синтаксиса, что-то писать
>после закрывающей скобки в объявлении функции???С точки зрения ANSI-C99 нельзя. С точки зрения компилятора всё возможно :)
Пример, конструктора/деструктора на Cи :)
#include <stdio.h>
void init() __attribute__ ((constructor));
void finit() __attribute__ ((destructor));void init() { fprintf(stderr, "init()\n"); }
void finit() { fprintf(stderr, "finit()\n"); }
int main(int argc, char *argv[]) { fprintf(stderr, "main()\n"); return 0; }
>>Решил покопаться в исходниках glibc и натолкнулся
>>на подобные объявления:
>>
>>extern int atoi (__const char *__nptr) __THROW __attribute_pure__;
>>
>>Что есть __THROW?
>>И что такое __attribute_pure__?
>
>Это расширения GNU GCC. см. info gcc . Касательно __attribute__ пункт 5.24
>
>
>>И вообще. Разве можно, с точки зрения синтаксиса, что-то писать
>>после закрывающей скобки в объявлении функции???
>
>С точки зрения ANSI-C99 нельзя. С точки зрения компилятора всё возможно :)
>
>
>Пример, конструктора/деструктора на Cи :)
>
>#include <stdio.h>
>void init() __attribute__ ((constructor));
>void finit() __attribute__ ((destructor));
>
>void init() { fprintf(stderr, "init()\n"); }
>void finit() { fprintf(stderr, "finit()\n"); }
>int main(int argc, char *argv[]) { fprintf(stderr, "main()\n"); return 0; }
С этим понятно. Спасибо.