好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 silverviolet 于 2021-1-11 21:48 编辑
下面是一段关于嵌入式 lcd控制的小段代码,使用环境为visual studio 2019。
struct lcd_controller s3c2440_lcd_controller =
{ .init = s3c2440_lcd_controller_init,
.enalbe = s3c2440_lcd_controller_enalbe,
.disable = s3c2440_lcd_controller_disable,};
提问如下 函数体内 .init是函数指针吧,右边的s3c2440_lcd_controller_init是函数的话,函数名相当于地址赋值给左边没错,但是这种初始化在我的visual studio里面很奇怪的发生问题,截图如下,
定义问题.jpg
我不知道应输入表达式算啥错误,之前看了网上大部分的有关结构体先定义后初始化都是类似 struct A.xxx={ xxx=aaa,yyy=bbb}这类,也有看到
#include "fun_in_struct.h"
int main(int argc, char **argv) {
//定义结构体指针或者结构体变量,分别用->和.进行内部元素的使用
data_store_object *obj;
char *word;
/*方法一:直接定义结构体指针然后用->对结构体变量和函数进行初始化
word = "nihao";
obj = calloc(1,sizeof(data_store_object));
obj->word = word;
obj->count = 24;
obj->word_print = WordPrint;
obj->count_print = CountPrint;
obj->word_print(obj->word);
printf("%d\n",obj->count_print(obj->count));
return 0;
*/
/*方法二:直接定义结构体变量然后直接进行初始化,用 变量 = xxx;进行赋值
data_store_object obj = {
.word = "nihao",
.count = 12,
.word_print = WordPrint,
.count_print = CountPrint
};
我现在很疑惑,.word也是指针啊,如果按照我的输入,为什么会出错呢?
主要是结构体内成员初始化用 .xxx= yyy就会发生错误,如果用struct a.b={ccc,ddd}这样的就没问题,应该怎样修改才对?作为一个新手真的相当困惑。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|