Ниже приводится мой код, я пытаюсь запустить его в Visual Studio.Почему я вижу ошибку переопределения в C?
#include <stdio.h>
#include <conio.h>
int main()
{
//int i;
//char j = 'g',k= 'c';
struct book
{
char name[10];
char author[10];
int callno;
};
struct book b1 = {"Basic", "there", 550};
display ("Basic", "Basic", 550);
printf("Press any key to coninute..");
getch();
return 0;
}
void display(char *s, char *t, int n)
{
printf("%s %s %d \n", s, t, n);
}
Он дает ошибку переопределения на линии, где печатается открывающая фигурная скобка функции.
Nitty pick: В C элементы символьных строковых литералов имеют тип 'char', а не' const char', как в C++. –
@ DanielFischer - не могли бы вы уточнить? вы имеете в виду 'char * a =" abc "' лучше, чем 'const char * a =" abc "' в C? – MByD
Я имею в виду, что в C, '" Basic "' имеет тип 'char [6]', а не 'const char [6]'. Поскольку попытка изменить строковые литералы - это UB, лучше назначить их 'const char *', но это не тот тип, который у них имеется в спецификации языка. –