我有鸡肉和鸡蛋问题。我想将一个数据结构传递给一个例程,该例程包含一个指向需要该结构的例程的指针。
我做了一个非常简单的例子。
我需要在定义之前使用CalcDataStruct,如果我在结构之后添加它,则未定义FuntctionPrototype。
我遇到的问题只出现在前两行,其余的可能包含一些语法错误,因为我没有在编译器中检查过这个。
data.frame
答案 0 :(得分:3)
您需要添加前向声明(见下文)。
struct CalcDataStruct;
只会声明struct CalcDataStruct
存在,所以typedef void(*FunctionPrototype)(CalcDataStruct *Ptr);
声明会成功,因为现在编译器知道struct CalcDataStruct
存在但不知道结构的细节,这无关紧要,因为所有FunctionPrototype
声明需要知道参数是指向struct CalcDataStruct
的指针。
struct CalcDataStruct; // <<< add this
typedef void(*FunctionPrototype)(CalcDataStruct *Ptr);
struct CalcDataStruct
{
int A, B, C, D;
int Values;
char SignA, Sign B;
int Result;
FunctionPrototype Routine;
}