C 结构体中的未声明函数

亚历克斯

我有以下几点code

#include <stdio.h>
#include <string.h>

void getData() {

    static int HasDataBeenWritten;

    if (HasDataBeenWritten == 0) {

        enum flags
        {
            Country_NA = 1, 
            CountryUS = 2,
            CountryCN = 4, 
            CountryCA = 8, 
            Business_NA = 16,
            BusinessYes = 32,
            BusinessNo = 64,
            TypeOfEntityNonCommericial = 128,
            EntityPersonal = 256,
            EntityAll = 512,
        };

        struct TopDomain
        { 
            char *DomainName;
            unsigned int DataFlags:9;
        };          

        static struct TopDomain DomainData[8];

        static char DomainNameArray1[3] = {"EDU"};
        DomainData[0].DomainName = DomainNameArray1;    
        DomainData[0].DataFlags = 145;
        HasDataBeenWritten = 1;
    }

    printf("DomainData[0] : %i", (DomainData[0].DomainName));
    printf("DomainData[0] : %d", DomainData[0].DataFlags);
}

我想打印*DomainName指向的数组甚至只是指针。但是,我收到此错误消息

getData.c:48:32 error: 'DomainData' undeclared (first use in this function) (printf("DomainData[0] : %i", (DomainData[0].DomainName));

我需要在数组中声明结构还是什么?

基思·汤普森

您需要调用时可见的位置声明DomainData(这是一个struct TopDomain结构数组printf

您已经在一组花括号中声明了它。名称的范围从声明扩展到最近的封闭},它就在printf调用之前(既然是static,它的生命周期就是程序的整个执行过程,所以那个时候对象仍然存在。问题是它的名字是不可见的。)

由于DomainData取决于struct TopDomainand的声明enum flags,您还需要移动它们。

(在复合语句中声明类型很少有意义。)

顺便说一句,您的格式字符串不正确。首先printf,您使用%ifor 类型的参数char*你想要%s(假设指针不是NULL)。在你的第二个中,你使用%d了一个类型的参数unsigned int你想要%u(或者0x%x在这种情况下可能更清楚)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的模板类中的C ++成员函数未声明错误

来自分类Dev

C ++中的多个文件编译期间“未声明函数”

来自分类Dev

我的模板类中的C ++成员函数未声明错误

来自分类Dev

C结构体声明数组

来自分类Dev

C-实际声明时未声明(此函数中的第一次使用)

来自分类Dev

为什么我不能在C中检查结构的大小?(未声明的错误)

来自分类Dev

在C宏中未声明(此函数中的第一次使用)

来自分类Dev

为什么在 C 中未声明 nullptr?

来自分类Dev

尽管未声明,C 编译器仍期望在函数中添加额外参数

来自分类Dev

填充在 .h 中声明的结构数组,在 .c 中的函数内部

来自分类Dev

在C中声明结构

来自分类Dev

结构体(C)中的结构体数组

来自分类Dev

在 C 中应该在哪里声明结构体的定义?.c 还是 .h?

来自分类Dev

在此范围内未声明stof函数c ++

来自分类Dev

C ++未声明的变量

来自分类Dev

C为结构体内部的结构体声明数组

来自分类Dev

C 中的外部结构声明

来自分类Dev

在目标c中获取未声明的标识符

来自分类Dev

Boost C++ 1.60 中的“gregorian 尚未声明”错误

来自分类Dev

C ++函数在函数中声明

来自分类Dev

C ++函数在函数中声明

来自分类Dev

从结构体(C / Assembly)调用函数

来自分类Dev

从函数C ++返回结构体数组

来自分类Dev

在VBA中未声明函数

来自分类Dev

在VBA中未声明函数

来自分类Dev

C ++未声明的类错误

来自分类Dev

未声明C ++本征

来自分类Dev

c ++属性未声明的变量

来自分类Dev

C将结构体/指针数组声明为结构体数组