1
다음은 내 코드입니다. 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에서는 문자 리터럴의 요소가 C++에서와 같이'char'가 아닌'const char '유형을가집니다. –
@DanielFischer - 당신이 자세히 설명해 주시겠습니까? 당신은'char * a = "abc"'가'const char * a = "abc"'C보다 낫다는 것을 의미합니까? – MByD
C에서''Basic ''은'const char [6]'이 아니라'char [6]'타입을 가지고 있음을 의미합니다. 문자열 리터럴을 수정하려는 시도는 UB이므로 'const char *'에 할당하는 것이 더 좋지만 언어 사양에 따라 유형이 다릅니다. –