Я хотел бы подавить специальное предупреждение, выданное gcc, вызванное возвратом адреса локальной переменной.Подавить gcc 4.2.1 предупреждение с помощью pragma
#include <stdio.h>
#pragma GCC diagnostic ignored "-Waddress"
void *get_stack() {
unsigned long v;
return &v;
}
int main()
{
void *p = get_stack();
printf("stack is %p\n",p);
return 0;
}
>gcc -fdiagnostics-show-option p.c
p.c: In function ‘get_stack’:
p.c:5: warning: function returns address of local variable
Платформа: эта проблема существует по крайней мере на MacOSX 10.5 Snow Leopard, я не пробовал на Linux еще.
В случае, если вам интересно, почему: я хотел бы работать с предупреждения ошибок превратились в , чтобы остановить долго наматывается процесс сборки, так что я могу реально увидеть проблемы и будут вынуждены , чтобы исправить их.
Этот конкретный код не является ошибкой, это «переносная» техника для нахождения указателя стека (который также работает на MSVC). [На самом деле это не будет работать на Itanium, который имеет два стека указателей]
указатель стека, необходимого для использования в процессе сборки мусора рутинной (для поиска указателей на штабеля подвесных нитей).
меня тоже: Интересно, почему? В любом случае спасибо! – Yttrill 2010-11-24 20:37:22