我的输入包含使用 typedef 定义的结构。我稍后使用这些来初始化我的主函数中的变量。
例如:
typedef struct {
int numer;
int denom;
} Rational;
int main()
{
Rational half, *newf = malloc(sizeof(Rational));
half = (Rational){ 1, 2 };
*newf = (Rational){ 2, 3 };
}
这是我想要做的:我想将两个初始化行转换为函数调用。
例如:
half = (Rational){ 1, 2 };
应该变成:
init_Rational( &half, 1, 2 );
和
*newf = (Rational){ 2, 3 };
应该变成
init_Rational( newf, 2, 3 );
诀窍是要记住 Rational 早先被定义为结构,并用函数调用替换初始化。它不必称为 Rational,它可以是任何名称。
一旦它识别出声明是一个 struct typedef,它应该执行以下操作,如上所示。
转动:
something = (someStructName){ data1, data2, data3.. };
进入
init_someStructName( &something, data1, data2, data3.. );
或为指针...转:
*something = (someStructName){ data1, data2, data3.. };
进入
init_someStructName( something, data1, data2, data3.. );
有人可以帮我吗?谢谢!