Используя следующий код:
#include <stdio.h>
struct my_struct {
int a;
int b;
my_struct();
};
my_struct::my_struct(void)
{
printf("constructor\n");
}
void my_struct(void)
{
printf("standard function\n");
}
int main (int argc, char *argv[])
{
struct my_struct s;
s.a = 1;
s.b = 2;
printf("%d-%d\n", s.a, s.b);
return 0;
}
Я получаю предупреждение, компилируемое с g ++ -Wshadow main.cpp:
main.cpp:15:20: warning: ‘void my_struct()’ hides constructor for ‘struct my_struct’
Я бы согласился с этим предупреждением, если void my_structфункция фактически заменила my_struct :: my_struct.Но, похоже, это не так.Если я запускаю программу, я получаю:
constructor
1-2
Есть идеи, что означает это предупреждение?Это очень раздражает, особенно когда я включаю заголовки C в код C ++