FachschaftMathPhysInfo / Programmiervorkurs

Programmiervorkurs der Fachschaft
Creative Commons Attribution Share Alike 4.0 International
9 stars 2 forks source link

richtige g++ optionen setzten #74

Open SinForest opened 6 years ago

SinForest commented 6 years ago

g++ macht weirde Dinge (Stichwort: kein return in non-void functions), darum sollten wir auf (das sowieso viel bessere) clang++ umsteigen.

Da der Befehl so lang ist, könnten wir den Studis auch gleich noch einen Alias anlegen (nicht 'c++', das verwirrt nur!!).

Im Skript muss dazu vmtl fast nichts geändert werden.

friedz commented 6 years ago

ich würde keinen alias für sie anlegen wir können aber die .bashrc erwähnen und sagen schreiben wie da aliase rein geschrieben werden

christian-heusel commented 5 years ago

Ich würde für dieses Jahr mal einen Alias, der g++="g++ -Wall -Werror -Wextra" gleichsetzt ausprobieren und schauen ob ein wechsel auf clang dann noch nötig ist... Ich lasse das Issue mal noch offen bis ich die Rechner eingerichtet habe :blush:

Für das von dir beschriebene Beispiel schenkt sich das dann nämlich nichts mehr:

$ g++ test.cpp -o test
test.cpp: In function ‘int add(int, int)’:
test.cpp:2:7: warning: statement has no effect [-Wunused-value]
    2 |     a + b;
      |     ~~^~~
test.cpp:3:1: warning: no return statement in function returning non-void [-Wreturn-type]
    3 | }
      | ^
$ clang++ test.cpp
test.cpp:2:7: warning: expression result unused [-Wunused-value]
    a + b;
    ~ ^ ~
test.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
2 warnings generated.

./test.cpp:

int add(int a, int b){
    a + b;
}
int main(int argc, char *argv[]) {
    add(1,2);
    return 0;
}
jenuk commented 5 years ago

Dann solltest du hier darauf achten, dass das Kapitel über Warnings (aktuell 16) noch Sinn ergibt