我正在使用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
答案 0 :(得分:1)
您无法从初始化列表中分配变量:
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;