1

みんなおはよう、

非常に反復的な関数を削減しようとしていますが、各「反復」には、struct A.element1 が struct B.element1 を設定する 2 つの構造体があります。現時点では、B を A に設定するための約 12 の異なる reqFunction() 呼び出しを持つ myFunction() があります。

void myFunction( structB *B )
{
    structA  A;

    if( reqGetFunction( GLOBAL_IN_1, ( void *)&A, SIZE ) != 0 )
    {
        A.element3 = -1;
        printf( "element3 failed\n" );
    }
    B->element7 = A.element3;   // A is gotten when regGetFunction() is called
    .
    .
    .
    if( reqGetFunction( GLOBAL_IN_12, ( void *)&A, SIZE ) != 0 )
    {
        A.element14 = -1;
        printf( "element14 failed\n" );
    }
    B->element18 = A.element14;
}

reqGetFunction() は変更できません。GLOBAL_IN をループする他の関数用の静的グローバル配列があり、structA A を静的グローバルにすることができます。

1 つのブロックを実行する myFunctionSingle() のようなものと、GLOBAL_IN 配列と構造体の A および B の要素を循環して myFunctionSingle() に入力する for ループを持つ myFunctionAll() が必要です。

したがって、私の本当の質問は、構造体のセットアップやreqGetFunctionなどのすべてが石に設定されているため、配列でできるように構造体の要素をどのように循環させることができるかということです。私はいくつかのことを試して検索しましたが、現在困惑しています。正直なところ、これが可能かどうか、またはそれだけの価値があるかどうかはわかりません。ご意見をお寄せいただきありがとうございます。

4

3 に答える 3