5

定数が定義されていないかどうかをチェックするプリプロセッサディレクティブはありますか?私は#ifndef指令を知っていますが、指令も探してい#elif not definedます。#elif not defined存在しますか?

これは私がそれを使用する方法です:

#define REGISTER_CUSTOM_CALLBACK_FUNCTION(callbackFunctName) \
    #ifndef CUSTOM_CALLBACK_1 \
        #define CUSTOM_CALLBACK_1 \
        FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
    #elif not defined CUSTOM_CALLBACK_2 \
        #define CUSTOM_CALLBACK_2  \
        FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
    #elif not not defined CUSTOM_CALLBACK_3 \
        #define CUSTOM_CALLBACK_3  \
        FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
    #endif
4

1 に答える 1

15

どうですか

#elif !defined(...)

しかし、あなたにはもっと大きな問題があります-末尾\が他のディレクティブを除外します-あるいはむしろそれらを違法にします。したがって、有効な構文を使用しても、定義は希望どおりに機能しません。

条件内で初期定義を移動する必要があります。

#ifndef CUSTOM_CALLBACK_1
    #define CUSTOM_CALLBACK_1 
    #define REGISTER_CUSTOM_CALLBACK_FUNCTION(callbackFunctName) \
    FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) 
#elif !defined(CUSTOM_CALLBACK_2)
    //.....
于 2013-02-11T08:30:25.430 に答える