本周末学习C ANSI语言的特性,这是相当大的挑战。使用指针的typedef声明
在练习中,我有一个头文件,它有几个函数签名的声明。
这一个引起我的注意:
typedef struct image * Image;
我想这对我的.c文件:
typedef struct {
char nbrMagique[10];
unsigned long imgLarg;
unsigned long imgHaut;
unsigned long imgSeuilMax;
unsigned long **imageMatrice;
} Image;
但请继续不断有错误,而编译:
imagePGM.c:22:3: erreur: conflicting types for ‘Image’
} Image;
所以我想因为我不能重新定义.c文件中的结构,我也无法触摸标题。
并尊重“typedef struct image * Image;”在.h头文件中,我必须创建一个动态二维表并将指针*图像指向它?
我是否错过了我的反思?
但是typdef签名中的指针*在.h文件中的含义是什么?
您对'Image'做了两个不同的定义... ...其中一个是struct image *的typedef,另一个是未命名结构的typedef。您只能键入一次名称。也许你的意思是'struct image {......};'在你的c文件中 –
我必须使用struct image * Image;肯定 我不能使用第二个。 但是,打印机签名中的指针*是什么意思? – Cyberflow
添加一些关于此的信息。上下文可能是人们试图创建一个指向不完整类型的指针,有时称为_opaque指针_。这是一种在C中实现真正私有封装的方法。如果是这种情况,最好不要将它作为指针输入。最好做'typedef struct image image'并强制调用者使用指针语法。 – Lundin