【发布时间】:2014-03-30 15:23:04
【问题描述】:
我正在尝试在 linux 内核中了解更多关于 kobject 的信息,并且在尝试编写使用此类工具的模块时,我收到了错误和警告消息,因此我在此处放置了相关数据的精简版本结构和对应的gcc的错误和警告信息。
$ gcc issue.c
issue.c:30:1: error: initializer element is not constant
} ;
^
issue.c:30:1: error: (near initialization for ‘first.attr’)
issue.c:34:1: error: initializer element is not constant
};
^
issue.c:34:1: error: (near initialization for ‘second.attr’)
issue.c:39:8: warning: initialization from incompatible pointer type [enabled by default]
struct bin_attribute *my_bin_attrs[] = { &first_bin_attrs, &second_bin_attrs };
^
issue.c:39:8: warning: (near initialization for ‘my_bin_attrs[0]’) [enabled by default]
issue.c:39:8: warning: initialization from incompatible pointer type [enabled by default]
issue.c:39:8: warning: (near initialization for ‘my_bin_attrs[1]’) [enabled by default]
以及示例代码:
#include <stdio.h>
struct attribute {
const char *name;
unsigned short mode;
};
struct bin_attribute {
struct attribute attr;
unsigned int size;
void *private;
};
struct attribute_group {
const char *name;
struct attribute **attrs;
struct bin_attribute **bin_attrs;
};
struct attribute first_attr = {
.name = "FIRST"
};
struct attribute second_attr = {
.name = "SECOND"
};
struct bin_attribute first = {
.attr = first_attr
} ;
struct bin_attribute second = {
.attr = second_attr
};
struct bin_attribute *first_bin_attrs = &first;
struct bin_attribute *second_bin_attrs = &second;
struct bin_attribute *my_bin_attrs[] = { &first_bin_attrs, &second_bin_attrs };
int main(void)
{
struct attribute_group my_group = {
.name = "xyz",
.bin_attrs = my_bin_attrs,
};
return 0;
}
【问题讨论】:
-
当您收到错误消息时,您应该 !!ALWAYS!! 在向Stack Overflow 提出相关问题之前,您应该在 Google 上尝试找出错误消息.
-
“和其他警告信息”对于Stack Overflow 的问题来说肯定不太理想。一个问题应该是关于一个错误(/问题)(它们是错误,而不是警告 - 有区别)。 Stack Overflow 上的帖子旨在为许多用户提供长期价值。如果您通过询问许多事情来污染帖子,那么任何人在寻找特定帖子时遇到此帖子的机会都很渺茫,如果他们这样做了,他们将不得不筛选所有其他不适用的相关信息到其他错误。
标签: c arrays gcc data-structures