【问题标题】:Error: unknown type name 'record'错误:未知类型名称“记录”
【发布时间】:2013-10-12 15:21:18
【问题描述】:

这是我的代码块 C 语言代码 对不起,我是新来的

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct record
{
char name[50];
char id[30];
char course[7];
char project[100];
char field[3];
char supervisor[30];

};

struct record addname();
void list_func(record);

int main()
{
struct record student1,student2;

student1=addname();
student2=addname();

printf("\n\n\tUNDERGRADUATE PROJECT RECORD SYSTEM");
list_func(student1);
list_func(student2);

   getch();
}
struct record addname()
{
    struct record system;
    printf("\nEnter student's Name: ");
    gets(system.name);
    printf("Enter matrix's ID: ");
    gets(system.id);
    printf("Enter course's Name: ");
    gets(system.course);
    printf("Enter Project Title: ");
    gets(system.project);
    printf("Enter Field: ");
    gets(system.field);
    printf("Enter Supervisor's name: ");
    gets(system.supervisor);
    return (system);
}

void list_func(record list)
{
    printf("\n\nStudent's Name: %s",list.name);
    printf("\nMatrix ID: %s",list.id);
    printf("\nCourse: %s",list.course);
    printf("\nProject's Title: %s",list.project);
    printf("\nField: %s",list.field);
    printf("\nSupervisor: %s",list.supervisor);
    printf("\n");
    printf("\n------------------------------------------------");

   return;
}

好的,这是我的错误:

在第 17 行,

void list_func(record);

在第 50 行,

void list_func(record list)

它说

line 17    warning: parameter names (without types) in function declaration [enabled by default]
line 50    error: Unknown type name 'record'
           in function 'main'
line 31    warning: control reaches end of non-void function [-Wreturn=type]

说真的,我不明白为什么会这样。我使用我朋友的编码作为参考并对其进行了一点更改,然后调试失败。 我什至在我的代码块项目中复制并粘贴了我朋友的代码,但它仍然无法运行 但它可以在她的代码块项目中完美运行。 谁能帮我? 我的编码不太好

【问题讨论】:

  • 在 C++ 中,定义为 struct record { ... } 的类型可以称为 struct recordrecord。在 C 中,类型名称是 struct record。另外,从不使用gets;它本质上是不安全的,并且在最新标准中已从语言中删除。 fgets 更安全(它可以让您指定目标缓冲区的大小并避免溢出),但使用起来有点复杂(它将'\n' 留在目标缓冲区中)。

标签: c struct void


【解决方案1】:
void list_func(record); ==> void list_func(struct record);

为了避免前两个错误

只需更改函数声明和定义中的参数类型即可。

为了避免警告

在主函数中getch(); 之后添加以下语句。

return 0;

【讨论】:

  • 天啊,非常感谢!
【解决方案2】:

将你的函数void list_func(record);定义为

void list_func(struct record);  

从函数void list_func(record list) 中删除return;。您不能从 void 类型函数返回。还要在main 的右大括号之前添加return 0

【讨论】:

  • 谢谢!真的很有帮助! :')
猜你喜欢
  • 2012-02-20
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多