【发布时间】:2017-01-24 19:14:18
【问题描述】:
在更多文件 .c 和 .h 上拆分程序时遇到问题 在 main.c 我放了一个结构像
struct listnumbers {
float number;
struct listnumbers *next;
};typedef struct listnumbers *list;
当我需要编译所有文件 .c .h 和编译器给我一个错误,比如 Unknown type name "list" onsorting.h = void sort(list *pt,float number)
【问题讨论】:
-
请read about how to ask good questions 学习如何创建Minimal, Complete, and Verifiable Example。我们需要查看完整且未经编辑的实际错误。我们需要首先查看导致错误的来源。
-
在不相关的注释上,您确定要将
list定义为指针吗?例如,您展示了sorting函数,该函数将指向list的指针作为其第一个参数。这意味着它是一个struct listnumbers **,一个指向指针的指针。这是故意的吗?将类型定义为指针(就像您所做的那样)迟早会导致混淆,如果不是与您有关,那么与阅读您的代码的人有关。 -
struct listnumbers { float number; struct listnumbers *next; }; typedef struct listnumbers *list; void sorting(list *pt, float number); int main() { }在这里编译得很好。你的问题是list在sorting.h中是未知的。你可能需要一个list.h,它必须包含在sort.h中。 -
如果在编译所有文件
.c和.h时出现问题,为什么不发布其中的一些文件,而不仅仅是关注struct的定义?您是否在所有使用它的地方都包含了该定义?确定编译器是否抱怨找不到类型list,是因为该类型没有在任何地方定义。想想编译器无法识别该类型会发生什么。也许其他地方有错字?struct的定义是正确的,也是typedef,因为你在那里写的。
标签: c