gpt4 book ai didi

c++ - 得到 "does not name a type when using static variable in *.c file"

转载 作者:行者123 更新时间:2023-11-28 07:25:40 29 4
gpt4 key购买 nike

我正在使用 android ndk 和 g++ 从 GDAL 编译 frmts/gtiff/libtiff/tif_dirinfo.c 文件。tiffFieldArray 一开始定义为静态变量。

static TIFFFieldArray tiffFieldArray;

然后我在同一个文件中使用它:

tiffFieldArray = { tfiatImage, 0, TIFFArrayCount(tiffFields), tiffFields };

但出现错误:

../../frmts/gtiff/libtiff/tif_dirinfo.c:264:1: error: 'tiffFieldArray' does not name a type

为什么?

在 tif_dir.h 中,结构定义:

#if defined(__cplusplus)
extern "C" {
#endif

...

struct _TIFFFieldArray {
TIFFFieldArrayType type; /* array type, will be used to determine if IFD is image and such */
uint32 allocated_size; /* 0 if array is constant, other if modified by future definition extension support */
uint32 count; /* number of elements in fields array */
TIFFField* fields; /* actual field info */
};
...

#if defined(__cplusplus)
}
#endif

最佳答案

您不能从初始化列表中分配变量:

tiffFieldArray = { tfiatImage, 0, TIFFArrayCount(tiffFields), tiffFields };

此语法仅适用于变量定义,不适用于赋值。将该行替换为:

    tiffFieldArray[0] =  tfiatImage;
tiffFieldArray[1] = 0;
tiffFieldArray[2] = TIFFArrayCount(tiffFields);
tiffFieldArray[3] = tiffFields;

编辑(在问题中添加了 mor 信息之后)

tiffFieldArray 有一个误导性的名称,因为它是一个结构,而不是数组。无论如何,我发布的先前解决方案在这种情况下不起作用。尝试写:

    tiffFieldArray.type =  tfiatImage;
tiffFieldArray.allocated_size = 0;
tiffFieldArray.count = TIFFArrayCount(tiffFields);
tiffFieldArray.fields = tiffFields;

关于c++ - 得到 "does not name a type when using static variable in *.c file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18780079/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com