Ich weiß, dass #define
s usw. normalerweise nie eingerückt werden. Warum?
Ich arbeite gerade in einem Code, der eine schreckliche Mischung aus #define
s, #ifdef
s, #else
s, #endif
s usw. enthält. All dies wird oft mit normalem C-Code gemischt. Das Nichteinrücken des #define
s macht sie schwer lesbar. Und die Mischung aus eingerücktem Code mit nicht eingerücktem #define
s ist ein Albtraum.
Was ist der Vorteil, wenn Sie nicht einrücken #define
? Macht es mich zu einem schlechten Menschen, wenn ich sie einrücke? Ist das nicht viel schöner?
#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
quelle
#ifdef
Zeilen in den Teilen enthält, in denen ich den tatsächlichen Code habe. Wenn ich bedingte Dinge benötige, setze ich sie entweder in ausgerechnete Funktionen oder in ausgerechnete Makros ein. es ist viel klarer so, wie ich es finde (zumindest für mich). Im Idealfall befinden sich alle ausgerechneten Teile in anderen Dateien (Header oder bedingt kompilierte Quelldateien; die übliche "Bedingung" ist, für welche Plattform der Code erstellt wird).Für das Beispiel, das Sie gegeben haben, kann es angebracht sein, Einrückungen zu verwenden, um es klarer zu machen, da Sie eine so komplexe Struktur verschachtelter Direktiven haben.
Persönlich halte ich es für nützlich, sie die meiste Zeit nicht eingerückt zu lassen, da diese Anweisungen getrennt vom Rest Ihres Codes funktionieren. Anweisungen wie #ifdef werden vom Vorprozessor verarbeitet, bevor der Compiler Ihren Code jemals sieht, sodass ein Codeblock nach einer # ifdef-Anweisung möglicherweise nicht einmal kompiliert wird .
Es ist wichtiger, Anweisungen visuell vom Rest Ihres Codes getrennt zu halten, wenn sie mit Code durchsetzt sind (und nicht wie in dem von Ihnen angegebenen Beispiel ein dedizierter Block von Anweisungen).
quelle
Eine übliche Lösung besteht darin, die Anweisungen zu kommentieren, damit Sie leicht wissen, worauf sie sich beziehen:
quelle
In fast allen derzeit verfügbaren C / CPP-Compilern ist dies nicht eingeschränkt. Es ist Sache des Benutzers, zu entscheiden, wie Sie den Code ausrichten möchten. Also viel Spaß beim Codieren.
quelle