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'型ではありません。 –
@ダニエルフィッシャー - あなたは精緻化できますか? 'char * a =" abc "'が 'const char * a =" abc "'よりも優れているのでしょうか? – MByD
C言語では、 "Basic"は 'const char [6]'ではなく 'char [6]'型を持っています。文字列リテラルを変更しようとするのはUBなので、 'const char *'に代入する方が良いですが、言語仕様ではそれらの型ではありません。 –