メソッドhowmany()
を定義するコードを作成しようとしています。 OSXでシステム関数のようなマクロの定義を解除するには?
a previous question後/usr/include/sys/types.h
#define howmany(x, y) __DARWIN_howmany(x, y)
で同じ名前の関数のようなマクロがあり、私は
#ifdef howmany
#undef howmany /*undefining '/usr/include/sys/types.h' */
#endif
しかし関数としてヘッダファイル内#undef
含む試してみました類似のマクロはアクティブのままです。
/usr/include/sys/types.h:184:9:注意:マクロ 'howManyが' はここで定義されます。#define howManyが(x、y)は__DARWIN_howmany(x、y)を/ *#yをの==のXビット? */
この関数のようなマクロを非アクティブにするにはどうすればよいですか?
私は今試しましたが、 '#include'の後の単純な '#undef howmany'はうまく動作します。 –
Ssswift
これは非常に壊れやすいです。はい、あなたはおそらくそれを動作させることができますが、物事がどのようにインポートされるかにはごくわずかな変更が原因で、再び失敗する(または悪いことに、間違ったコードを呼び出す)ことがあります。 '#undef'が' types.h'を含むかもしれない全てのファイルに含まれていることと、定義された後には未定義であることを確認する必要があります。これは破ることができる多くの方法です。関数の名前を変更します。名前は取られます。 –
@Robネイピエは答えをしてください。それは良いものであり、私はそれを投票したい。私もこれを答えた質問にして、それが私の "答え:0"のリストから外れるようにしたい。そして、Q/AペアはQ /コメントペアよりもずっと良いです。そして、あなたはとても正しいです。 – Yunnosch