0

このマクロを書くのに問題があります。シードリングを使用しています。

次のコードを含むファイル「globals.h」があります。

#ifndef globals
    #ifndef UNITY
        #define STATIC static
    #else
        #define STATIC
    #endif
    #define globals 1
#endif

したがって、ここで起こるべきことは、コードが単一性でテストされていない場合、STATIC を使用するすべてのメソッドが静的になり、それ以外の場合は静的ではないということです。

テスト ファイルには「unity.h」が含まれ、次に「globals.h」が含まれ、さらに「protocol.h」が含まれます。

テスト対象のファイル「protocol.c」には、「globals.h」と「protocol.h」が含まれています。

テスト ファイル「test_protocol.c」には、「unity.h」、「globals.h」、「protocol.h」の順に含まれています。

私の理解では、UNITY を最初に定義する必要があります。次にglobals.h、UNITY は UNITY.h で既に定義されているため、STATIC を何も定義しません。

しかし、私が見ている動作は、私が何をしてもそのディレクティブglobals.hに入ることができないということです.#elseSTATICstatic

ただし、多くの人がこの戦略を推奨し、実装しているため、私が達成しようとしていることが可能であることはわかっています。globals.hでは、 UNITY が定義されているのに、定義されていないと思わせる原因となっているのは何ですか?

4

2 に答える 2