4582|11

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

这是什么结构体语法? [复制链接]

static struct file_operations qq2440_leds_fops = {
        .owner        =        THIS_MODULE,
        .ioctl        =        qq2440_leds_ioctl,
};
请问这里的.owner是什么意思,我在vc里面写个简单的测试结构体,这样写不能编译啊:
#include

int fn(int i,int j){
        return i+j;
}

struct s1{
        int i;
        int j;
};
struct s3c2410{
        struct s1 index;
        int (*ioctl) (int *, char *);
        char flag;
};
struct s1 s1test={
        1,
        2
};
struct s3c2410 stest={
        .index=s1test,
        .ioctl=fn
};

int main(){
        stest.addr[0]='z';
        printf("index=%d,addr0=%d\n",stest.index,stest.addr[0]);
}
编译...........................
D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(21) : error C2059: syntax error : '.'
D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(23) : error C2143: syntax error : missing ';' before '}'
D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(23) : error C2143: syntax error : missing ';' before '}'
D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(26) : error C2039: 'addr' : is not a member of 's3c2410'
        D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(11) : see declaration of 's3c2410'
D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(27) : error C2039: 'addr' : is not a member of 's3c2410'
        D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(11) : see declaration of 's3c2410'
D:\Program Files\Microsoft Visual Studio\MyProjects\struct\struct.cpp(28) : warning C4508: 'main' : function should return a value; 'void' return type assumed
???? cl.exe ?±???í.

struct.exe - 1 error(s), 0 warning(s)


说这个点号.owner语法有问题,那这个linux的驱动代码用的什么特别的语法?

最新回复

要用和板子能兼容的交叉编译器。。。 .owner的意思是驱动模块的所有者,一般都设置成THIS_MODULE  详情 回复 发表于 2009-5-2 15:21
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
up
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
up
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个是gcc的扩展,对数据结构成员进行赋初值。以下是对struct file_operations的变量qq2440_leds_fops赋初值:
static struct file_operations qq2440_leds_fops = {
.owner = THIS_MODULE,           // 将THIS_MODULE赋给成员owner
.ioctl = qq2440_leds_ioctl,     // 将qq2440_leds_ioctl赋给成员ioctl
};

VC不支持这种扩展方式,所以不能这样使用,但是你可以采用C/C++对数据结构成员常规初始化方式。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
我终于找到这个说明了,是C99的新加的语法,可以对结构体指定成员赋值。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
学习了!!
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 
晕, qq2440的东西, 你用 VC 编译? 不明白你要干什么?

s3c2440 是 ARM9 CPU, 与 VC 一点关系也没有, 要用 arm-linux-gcc 编译 !
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(中级)

8
 
晕, qq2440的东西, 你用 VC 编译? 不明白你要干什么?

s3c2440 是 ARM9 CPU, 而且这段代码明显是 linux 的,

所以与 VC 一点关系也没有, 要用 arm-linux-gcc 编译 !
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
周工开发网-淘宝店开张!
本店推荐的三款周立功99元开发板,非常适合初学者,资料丰富价格便宜。
EasyARM1138  (内嵌USB仿真器的Cortex-M3开发板)
EasyARM2103  (arm7内核开发板)
EasyFPGA030  (FPGA开发板)
详情见淘宝介绍:http://shop37086041.taobao.com
周工开发网:http://www.01zg.com   (专业的嵌入式交流平台)
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 xiaocha 的回复:
晕, qq2440的东西, 你用 VC 编译? 不明白你要干什么?

s3c2440 是 ARM9 CPU, 而且这段代码明显是 linux 的,

所以与 VC 一点关系也没有, 要用 arm-linux-gcc 编译 !

我以为同一种语言的语法是一样的,不过现在知道了,版本有很多。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

11
 
底层硬件就不同嘛,要编译成2440能够运行的二进制文件。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

12
 
要用和板子能兼容的交叉编译器。。。
.owner的意思是驱动模块的所有者,一般都设置成THIS_MODULE
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表