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