Я хотел бы подавить конкретное предупреждение, выдаваемое gcc, вызванное возвращением адреса локальной переменной.
#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 с двумя указателями стека]
Указатель стека требуется для использования подпрограммой сбора мусора
(для поиска указателей на стеки подвешенных нитей).