Indenting #defines

后端 未结 9 2078
伪装坚强ぢ
伪装坚强ぢ 2020-11-30 00:34

I know that #defines, etc. are normally never indented. Why?

I\'m working in some code at the moment which has a horrible mixture of #define

9条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-30 01:00

    As some have already said, some Pre-ANSI compilers required the # to be the first char on the line but they didn't require de preprocessor directive to be attached to it, so indentation was made this way.

    #ifdef SDCC
    #  if DEBUGGING == 1
    #    if defined (pic18f2480)
    #      define FLASH_MEMORY_END 0x3DC0
    #    elif defined (pic18f2580)
    #      define FLASH_MEMORY_END 0x7DC0
    #    else
    #      error "Can't set  up flash memory end!"
    #    endif
    #  else
    #    if defined (pic18f2480)
    #      define FLASH_MEMORY_END 0x4000
    #    elif defined (pic18f2580)
    #      define FLASH_MEMORY_END 0x8000
    #    else
    #      error "Can't set  up flash memory end!"
    #    endif
    #  endif
    #else
    #  if DEBUGGING == 1
    #    define FLASH_MEMORY_END 0x7DC0
    #  else
    #    define FLASH_MEMORY_END 0x8000
    #  endif
    #endif
    

    I've often seen this style in old Unix headers but I hate it as the syntax coloring often fails on such code. I use a very visible color for pre-processor directive so that they stand out (they are at a meta-level so should not be part of the normal flow of code). You can even see that SO does not color the sequence in a useful manner.

提交回复
热议问题