Если я напишу эту программу:
#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
после новое
ключевое слово:
#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
?