gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
В моей системе установлен пакет библиотеки dev с заголовками, которые я использую для компиляции своего двоичного файла. Внешние объявления одного из заголовочных файлов выглядят как
test.h
#ifndef AAA
#define AAA
typedef struct test test;
#endif
Мой двоичный файл
main.c
#include <lib/test.h>
int main(void){
test *test = NULL; //no warning produced
(void) test;
}
При компиляции с -Wshadow
предупреждение не выдается. Однако если я включу рукописный файл с тем же объявлением, что и
mytest.h
:
#ifndef AAA
#define AAA
typedef struct test test;
#endif
main.c
#include "mytest.h"
int main(void){
//warning: declaration of ‘test’ shadows a global declaration [-Wshadow]
test *test = NULL;
(void) test;
}
Это ожидаемое поведение? Я думал, что предупреждение будет напечатано в обоих случаях