我輸入的內容包含用typedef定義的結構。 我後來用這些來初始化我主函數中的變量。用sed編輯一行
例如:
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早期定義爲struct,並用函數調用替換初始化。它不必稱爲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..);
有人可以幫助我嗎?謝謝!
我認爲其中一個要求是替換隻能在與初始化相同的文件內部定義的結構中完成。 –