在C语言下为什么这样初始化不行

toadzw 2010-09-29 08:25:26
typedef struct {
pthread_mutex_t sql_mutex1;
}ORACLE_CONNECT={PTHREAD_MUTEX_INITIALIZER};
在C语言下为什么这样初始化不行,我看书是这样搞的,可我自己这样做就不行;
...全文
282 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
x642458 2010-10-01
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 zrebecca 的回复:]

类型名不可以当变量的呀
[/Quote]
zrebecca 2010-10-01
  • 打赏
  • 举报
回复
类型名不可以当变量的呀
lodgersore 2010-10-01
  • 打赏
  • 举报
回复
加了typedef,就是定义结构体啊,当然是不行的。。。
就呆在云上 2010-10-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 toadzw 的回复:]

error: typedef `ORACLE_CONNECT' is initialized (use __typeof__ instead)
[/Quote]

这不说的很清楚了?
请使用typeof
keanoz 2010-10-01
  • 打赏
  • 举报
回复
去掉typedef,则ORACLE_CONNECT是一个变量名;不去掉,则它是这个类型的别名。
lz的语法相当于:int = a;
wizard_tiger 2010-09-30
  • 打赏
  • 举报
回复
ORACLE_CONNECT是一个自定义类型与int,float都一样都是类型名不是变量名。
旭子 2010-09-30
  • 打赏
  • 举报
回复
书山是错的!
greex 2010-09-30
  • 打赏
  • 举报
回复
这个与编译器有关,VC6不一定过,但VC2010应可以的。
xiaoyuer5222 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 crazy_akai 的回复:]
引用 8 楼 toadzw 的回复:
struct {
int allcount;
}ORACLE_CONNECT={2};我也不知道为什么,在linux C下面就是通不过


明显不行嘛,结构体连名称都没有,应该在struct后面加上一个名称,像这样
struct oracle{
int allcount;
}ORACLE_CONNECT={2};这样就没问题了
[/Quote]
小标签是可以有可以没有的,如果没有小标签,则在定义结构时必须同时定义此结构类型相关的对象,或者用typedef给此结构定义别名
crazy_akai 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 toadzw 的回复:]
struct {
int allcount;
}ORACLE_CONNECT={2};我也不知道为什么,在linux C下面就是通不过
[/Quote]

明显不行嘛,结构体连名称都没有,应该在struct后面加上一个名称,像这样
struct oracle{
int allcount;
}ORACLE_CONNECT={2};这样就没问题了
jernymy 2010-09-29
  • 打赏
  • 举报
回复
PTHREAD_MUTEX_INITIALIZER 是一个pthread_mutex_t类型的就可以了。
时间一粒 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
因为ORACLE_CONNECT不是一个变量名,而是一个类型名
[/Quote]
UP
cardinaleaf 2010-09-29
  • 打赏
  • 举报
回复
去掉就可以啊
xgbing 2010-09-29
  • 打赏
  • 举报
回复
typedef去掉,汗
dingshaofengbinbin 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
因为ORACLE_CONNECT不是一个变量名,而是一个类型名
[/Quote]
YES
东大坡居士 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 toadzw 的回复:]
struct {
int allcount;
}ORACLE_CONNECT={2};我也不知道为什么,在linux C下面就是通不过
[/Quote]

可以编译通过啊~~~~~
dooX8086 2010-09-29
  • 打赏
  • 举报
回复
去掉 typedef 按道理应该可以。
不行的话〜〜可能关于C编译器对于"匿名"支持有关(猜想)
toadzw 2010-09-29
  • 打赏
  • 举报
回复
struct {
int allcount;
}ORACLE_CONNECT={2};我也不知道为什么,在linux C下面就是通不过
pengzhixi 2010-09-29
  • 打赏
  • 举报
回复
你用了typedef 那么ORACLE_CONNECT是一个类型名,而非一个变量名
toadzw 2010-09-29
  • 打赏
  • 举报
回复
struct {
int allcount;
}ORACLE_CONNECT={2};我也不知道为什么,在linux C下面就是通不过
加载更多回复(5)

69,373

社区成员

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

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