【问题标题】:struct has no member named结构没有名为的成员
【发布时间】:2013-05-23 20:32:24
【问题描述】:

我的程序包含一个包含两个数组成员的结构。我在函数参数中将结构调用为 void 函数。

结构定义:

struct caketime
{
    double baking_time [4]={20,75,40,30};
    double prepare_time[4]={30,40,25,60};
};

void 函数:

void prepareorder(struct caketime p) {

int i=0;
    for (i=0;i<LIMIT;i++)
    {
        if(p.prepare_time[i]==25)
            printf("Choclate");
        else if (p.prepare_time[i]==30)
            printf("Sponge Cake");
        else if (p.prepare_time[i]==45)
            printf("Meringue");
        else if (p.baking_time[i]==60)
            printf("Red_velvet");
    }
}

当我编译这个程序时,我得到如下描述的错误:

In function 'prepareorder': error: 'struct caketime' has no member named 'prepare_time'
error: 'struct caketime' has no member named 'baking_time'

这里似乎有什么问题?

【问题讨论】:

  • 它们是否在单独的文件中声明?向我们展示定义、创建和分配。
  • 那个结构定义不是有效的 C。如果你要使用初始化器,你需要在结构定义之后有一个标识符,然后初始化器。
  • 你的结构“定义”不应该编译。
  • 不要在struct中初始化数组。
  • 请向我们展示显示问题的完整自包含源文件,以及您从编译器获得的确切完整错误消息。并确保您将其编译为 C,而不是 C++;如果您在 C++11 模式下使用 C++ 编译器,您的结构定义实际上可能会编译。

标签: c arrays function data-structures


【解决方案1】:

试试,

struct caketime
{
   double baking_time[4];
   double prepare_time[4];  
};

而不是,

struct caketime
{
   double baking_time [4]={20,75,40,30};
   double prepare_time[4]={30,40,25,60};
};

你不应该初始化结构内的数组元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多