Каково значение #if 1 в C

Я нашел несколько программ с операторами типа #if. Каково значение этого #if 1? Вот фрагмент кода:

   for (;;) {
        register const uint8_t* m_pos;
        unsigned m_off;
        unsigned m_len;
        unsigned dindex;

        D_INDEX1(dindex,ip);
        GINDEX(m_pos,m_off,dict,dindex,in);
        if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M4_MAX_OFFSET))
        goto literal;
#if 1
    if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
    goto try_match;
    D_INDEX2(dindex,ip);
#endif
    GINDEX(m_pos,m_off,dict,dindex,in);
    if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M4_MAX_OFFSET))
        goto literal;
    if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
        goto try_match;
    goto literal;

 try_match:

person D.L.    schedule 04.07.2014    source источник
comment
В основном это вместо комментария. Вы можете изменить его на 0 и быстро «отменить» обработку операторов между #if и #endif. Это для программиста.   -  person Zach P    schedule 04.07.2014


Ответы (2)


Это реликвия того, кто играл с кодом. Он абсолютно ничего не делает, но изменяет 1 на 0, и область между #if и #endif исключается из компиляции.

person Sebastian Redl    schedule 04.07.2014

if - это "ничего не делать", но это может быть полезно, если код, содержащийся внутри, - это то, что вы хотите быстро отключить.

Это несколько лучше, чем большой блочный комментарий, поскольку он позволяет внутренне блочные комментарии.

person unwind    schedule 04.07.2014