\ am Ende der Zeile

Tritt ganz am Ende einer Zeile ohne ein weiteres Whitespace ein Backslash \ auf, so wird der Preprozessor das Zeilenende entfernen und die nächste Zeile direkt an die aktuelle anfügen. Dies wird insbesondere bei Makrodefinitionen gebraucht, welche per Definition eigentlich nur über eine Zeile gehen dürfen, jedoch oftmals zu unübersichtlich sind, um sie in einer einzelnen Zeile darzustellen.










a = (50, 60, 70)
#include <stdio.h>
#define SET(a, x, y, z) \
  a[0] = x;\
  a[1] = y;\
  a[2] = z

int main(){
  int a[3];
  SET(a, 50, 60, 70);
  printf("a = (%d, %d, %d)", a[0], a[1], a[2]);
  return 0;
}

Details

Ein Backslash am Ende einer Zeile ist nicht alleine auf Makros beschränkt. Der Preprozessor wandelt sämtliche Vorkommen im gesamten Code rigoros um.

Die Benutzung des Backslashs am Ende der Zeile sollte sehr sorgfältig benutzt werden. Es ist bekannt, dass wegen einem vergessenen Backslash oder einem Backslash zuviel bis zu mehrere Tage an Fehlersuche benötigt wurden. Manche Compiler geben zwar Warnungen wie beispielsweise backslash and newline separated by space aus, wenn mal aus Versehen ein Whitespace hinzukommt, allerdings ist nicht gewährleistet dass diese Warnungen bei jedem Compiler angegeben werden. Ganz üble Fehler können entstehen, wenn ein Backslash am Ende der Datei angegeben wird, auch hier haben manche Compiler eine Warnung wie backslash-newline at end of file eingebaut.