关于typedef 的问题 请教,不难

sean717 2003-03-23 10:40:29
先做以下定义:
typedef float vec3_t[3];

在main函数以前做以下定义以及初始化 可通过编译:
vec3_t newCube[24]={{1,2,3}};

但是在其它的函数里面再用
vec3_t newCube[2]={{1,2,3}};
则编译器报错


请问是为什么?我要怎么给newCube符值?
...全文
59 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouzhaohan 2003-03-24
  • 打赏
  • 举报
回复
typedef 只是一个类型定义,不同于定义变量,其只在他所在文件中起作用,而且只有在它被定义了之后,才会起作用。所以把它定义在头文件里,然后什么c文件要用到它,就include那个头文件。这种东西没有什么全局不全局的。
bailingke 2003-03-24
  • 打赏
  • 举报
回复
建议楼主看书
了解什么是typedef
本来很容易理解的
langzi8818 2003-03-23
  • 打赏
  • 举报
回复
迷茫中^^^^^^^^
CForum 2003-03-23
  • 打赏
  • 举报
回复
不知道是不是WARNING的等级的问题,可将WARNING等级降到最低试一下。
sean717 2003-03-23
  • 打赏
  • 举报
回复
对了,在赋值的时候,可不可以一次给一“行”的数据赋值?
象我问题中的
typedef float vec3_f[3];
vec3_f newCube 这样的数组

可否在赋值时 newCube[5]=... 就象初始化时一样 语法要怎么写?

谢谢大家帮忙
sean717 2003-03-23
  • 打赏
  • 举报
回复
哎,真奇怪,还是不行

我已经把typedef宜到我唯一的头文件里面去了

仍然说有错
point_to 2003-03-23
  • 打赏
  • 举报
回复
是不是不认识vec3_t??
在main函数前定义typedef float vec3_t[3];
让任何函数可见之;
初始化可以用{}
也可用循环来赋值
Jinglihui 2003-03-23
  • 打赏
  • 举报
回复
我也在其它函数里作了测试,也没有出现错误!
代码我就不贴了!
只要typedef float vec3_f[3];声明为全局的,在其它函数里这样使用是可以的:vec3_f newCube1[2]={{1,2,3}};
bailingke 2003-03-23
  • 打赏
  • 举报
回复
他的意思可能是,在头文件中那样定义typedef
然后在cpp文件中使用

如果在其他的工作中
不包含这样的头文件
当然就出错了
Jinglihui 2003-03-23
  • 打赏
  • 举报
回复
下边的代码是我关于你这个问题的测试代码,我在bcc5.5下编译,没有问题
#include<iostream>
using namespace std;
typedef float vec3_f[3];
void main()
{
vec3_f newCube[24]={{1,2,3}};//它只是对这个24行3列的数组的第一行进行赋值,其它行的全为0
for (int i=0;i<24;i++)
{
for(int j=0;j<3;j++)
cout<<newCube[i][j]<<" ";
cout<<endl;
}
vec3_f newCube1[2]={{1,2,3}};
for (int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
cout<<newCube1[i][j]<<" ";
cout<<endl;
}
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧