Если я напишу эту программу:
#include <iostream>
namespace foo {
struct bar {
int x;
};
}
int main (void) {
struct foo::bar *a = new struct foo::bar;
delete a;
return 0;
}
и скомпилирую ее с:
g++ main.cxx -Wall -Wextra
Это выдает мне следующее предупреждение:
main.cxx: In function ‘int main()’:
main.cxx:10:39: warning: declaration ‘struct foo::bar’ does not declare anything [enabled by default]
Однако, еслиЯ вынимаю ключевое слово struct
после ключевого слова new
:
#include <iostream>
namespace foo {
struct bar {
int x;
};
}
int main (void) {
struct foo::bar *a = new foo::bar;
delete a;
return 0;
}
и компилирую его так же, g ++ не выводит предупреждений.Почему g ++ выводит это предупреждение, если я использую ключевое слово struct
?