鱼C论坛

 找回密码
 立即注册
查看: 2333|回复: 10

[已解决]新人C++问题求助

[复制链接]
发表于 2018-10-7 09:44:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,在定义结构体时遇到了一些问题,错误提示时error: 'void init(<anonymous struct>*)', declared using anonymous type, is used but never defined [-fpermissive]|
最佳答案
2018-10-7 18:06:12
°希作先生丶 发表于 2018-10-7 17:52
我知道怎么声明普通的结构体,就是想问一下这样声明为什么无法通过
  1. #include <iostream>

  2. typedef struct data
  3. {
  4.         int id;
  5.         char *name;
  6. }Data;

  7. typedef struct staticlinkedlist
  8. {
  9.         Data dt;
  10.         int Cnext;
  11. }StaticLinkedList[10];

  12. void init(StaticLinkedList tar)
  13. {
  14.         for(int i = 0; i < 0; i++)
  15.                 tar[i].Cnext = i+1;
  16.         tar[8].Cnext = 0;
  17.         tar[9].Cnext = 0;
  18. }

  19. void Show(StaticLinkedList tar)
  20. {
  21.         for(int i = 0; i < 10; i++)
  22.                 std::cout << tar[i].Cnext << std::endl;
  23. }

  24. int main()
  25. {
  26.         StaticLinkedList s1;
  27.         init(s1);
  28.         return 0;
  29. }
复制代码
都说了没有结构体名~~~ 然后 struct xxx -> typedef struct xxx XXX 不要用相同的名字

定义结构体时直接声明为数组形式

定义结构体时直接声明为数组形式

作为参数传给函数的时候就传不进去

作为参数传给函数的时候就传不进去

函数顶底

函数顶底
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-10-7 12:18:09 From FishC Mobile | 显示全部楼层
typedef struct xxx{   }结构体变量;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 17:52:57 | 显示全部楼层
claws0n 发表于 2018-10-7 12:18
typedef struct xxx{   }结构体变量;

我知道怎么声明普通的结构体,就是想问一下这样声明为什么无法通过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 18:06:12 | 显示全部楼层    本楼为最佳答案   
°希作先生丶 发表于 2018-10-7 17:52
我知道怎么声明普通的结构体,就是想问一下这样声明为什么无法通过
  1. #include <iostream>

  2. typedef struct data
  3. {
  4.         int id;
  5.         char *name;
  6. }Data;

  7. typedef struct staticlinkedlist
  8. {
  9.         Data dt;
  10.         int Cnext;
  11. }StaticLinkedList[10];

  12. void init(StaticLinkedList tar)
  13. {
  14.         for(int i = 0; i < 0; i++)
  15.                 tar[i].Cnext = i+1;
  16.         tar[8].Cnext = 0;
  17.         tar[9].Cnext = 0;
  18. }

  19. void Show(StaticLinkedList tar)
  20. {
  21.         for(int i = 0; i < 10; i++)
  22.                 std::cout << tar[i].Cnext << std::endl;
  23. }

  24. int main()
  25. {
  26.         StaticLinkedList s1;
  27.         init(s1);
  28.         return 0;
  29. }
复制代码
都说了没有结构体名~~~ 然后 struct xxx -> typedef struct xxx XXX 不要用相同的名字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 18:59:20 | 显示全部楼层
claws0n 发表于 2018-10-7 18:06
都说了没有结构体名~~~ 然后 struct xxx -> typedef struct xxx XXX 不要用相同的名字

哦天哪可以了,谢谢老哥,还有点小问题就是data结构声明的时候是两个相同的名字为啥没报错- =
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 19:10:30 | 显示全部楼层
°希作先生丶 发表于 2018-10-7 18:59
哦天哪可以了,谢谢老哥,还有点小问题就是data结构声明的时候是两个相同的名字为啥没报错- =

那个还好,主要的是 StaticLinkedList,会与数组元素冲突,所以一般上都避免
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 19:27:46 | 显示全部楼层
claws0n 发表于 2018-10-7 19:10
那个还好,主要的是 StaticLinkedList,会与数组元素冲突,所以一般上都避免

可以详细说一下么,初学者比较笨- =
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 19:36:20 | 显示全部楼层
°希作先生丶 发表于 2018-10-7 19:27
可以详细说一下么,初学者比较笨- =

因为你定义了一个结构体变量 StaticLinkedList[10],如果你写 StaticLinkedList,会是这个结构体的首地址,冲突了。
typedef struct xxx {}XXX; 等同
struct xxx{};
typedef struct xxx XXX; //这个还是声明的部分不是变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 19:40:25 | 显示全部楼层
claws0n 发表于 2018-10-7 19:36
因为你定义了一个结构体变量 StaticLinkedList[10],如果你写 StaticLinkedList,会是这个结构体的首地址 ...

也就是说下面的XXX时声明而上面的XXX时定义这个意思么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 19:44:03 | 显示全部楼层
°希作先生丶 发表于 2018-10-7 19:40
也就是说下面的XXX时声明而上面的XXX时定义这个意思么

呃,声明是没有内容的
比如说函数的声明
void fun(int);
函数的定义
void fun(int x)
{......}
主要是你声明为结构体数组,那么会同时定义一个结构体数组。尽量避免就对了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 19:51:13 | 显示全部楼层
claws0n 发表于 2018-10-7 19:44
呃,声明是没有内容的
比如说函数的声明
void fun(int);

嗯, 大概明白了一点- = 谢谢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 11:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表