1

以下是我的代码,我正在尝试在 Visual Studio 中运行它。

#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);
}

它在键入函数的左大括号的行上给出重新定义错误。

4

1 回答 1

5

您在声明之前调用display它,在这种情况下,编译器假定返回类型是int,但您的返回类型是void

在使用之前声明函数:

void display(char *s, char *t, int n);
int main() {
    // ...

另请注意,您将其声明为接收char*,但将字符串文字传递给它(const char*)要么更改声明,要么更改参数,例如:

void display(const char *s, const char *t, int n);
int main()
{
    // snip
    display ("Basic", "Basic", 550);
    //snap
}

void display(const char *s, const char *t, int n)
{
    printf("%s %s %d \n", s, t, n);
}
于 2012-04-21T14:46:47.017 回答