Допустим, у меня есть этот код на Си, который имеет два разных заявления в C.Разрешение функции перегрузки в C компилятором (Подавляя «конфликтующие типы для» Ошибка в C)
struct pcdata
{
int x; int y;
};
int yyparse (struct pcdata *pp);
int yyparse (void *pp);
int yyparse (struct pcdata *pp)
{
}
Компиляция кода куб.см/ССАГПЗ, У меня есть conflicting types
ошибка.
test> cc -c hello.c
hello.c:7:5: error: conflicting types for 'yyparse'
int yyparse (void *pp);
^
hello.c:6:5: note: previous declaration is here
int yyparse (struct pcdata *pp);
^
1 error generated.
test> gcc -c hello.c
hello.c:7: error: conflicting types for ‘yyparse’
hello.c:6: error: previous declaration of ‘yyparse’ was here
Ошибка g + в том, что C++ допускает перегрузку функции.
test> g++ -c hello.c
Есть ли опция gcc, позволяющая перегрузить функцию? У меня есть этот (упрощенный) код с Bison 2.7, сгенерированным кодом tab.c.
Зачем вам нужны 2 определения функций для 'yyparse()' –
Если вы хотите функцию C++ для перегрузки функций, используйте C++ для компиляции кода. –