C1X & neue Keywords
-
Also ich mags... jetzt wird mein code geekiger aussehen.
-
Bezeichner, die mit _[A-Z] beginnen, sind im C-Standard schon immer reserviert, dementsprechend kann das Komitee sie benutzen, ohne in Gefahr zu laufen, bestehenden Code ungültig zu machen (bzw. Leuten, deren Code nicht mehr funktioniert, erklären, dass ihr Code noch nie standardkonform gewesen ist). Ich vermute, dass die zusätzlichen Standardheader angenehmere Aliase definieren werden - so ist das in C99 mit _Bool und stdbool.h ja auch geschehen.
Dazu, warum alignof davon verschont geblieben ist, habe ich aber auch keine Idee. Möglicherweise ein Beispiel für Parkinsons Fahrradschuppen.
-
Seldon schrieb:
Bezeichner, die mit _[A-Z] beginnen, sind im C-Standard schon immer reserviert, dementsprechend kann das Komitee sie benutzen, ohne in Gefahr zu laufen, bestehenden Code ungültig zu machen
An das Argument hatte ich grad tatsächlich nicht gedacht. Wie viele LOC es gibt, in denen Bezeichner wie generic, atomic etc. wohl schon schon auftauchen ...
Mir persönlich wäre es dennoch 1000mal lieber, auf nen Compilerswitch zu vertrauen als diese Bezeichner zu verwenden. Aber wie OKImTrollings Post schon vermuten lässt - selbst dann, wenn es nur Getrolle ist- gibt es bestimmt genug Leute, die sich damit anfreunden können. Ich kann es nicht
-
Nun, es gibt real kein Problem (siehe seldons post). Ob man es mag oder nicht, irgendwie stellt sich mir die Frage nicht.
-
Tim schrieb:
Ob man es mag oder nicht, irgendwie stellt sich mir die Frage nicht.
Nun, ich besitze eine tiefe emotionale Bindung zu allen Mitgliedern der C/C++-Familie. Kann also sein, dass ich den Punkt des "attraktiven Codes" etwas überbewerte. Eine gewisse Einheitlichkeit bei der Vergabe von Keywords sollte doch wohl gegeben sein? Dass es real kein Problem gibt, find ich da nicht so wichtig (Solange es die nötigen Compilerswitches gibt).
-
Und schon hat sich das Problem für mich gelöst.
#define _Generic Generic #define _Alignas Alignas #define _Atomic Atomic #define _Bool Bool #define _Static_assert Static_assert
-
Und schon hat sich das Problem für mich gelöst.
gcc -Wall -Wextra -pedantic -std=c1x -D_Generic=Generic -D_Alignas=Alignas -D_Atomic=Atomic -D_Bool=Bool -D_Static_assert=Static_assert
-
Könnte man die Altlasten nicht einfach mal über Bord werfen und einen neuen, sauberen Standard entwerfen? Wer seine alten Programme kompilieren möchte kann doch dann auch alte Compiler nutzen. So wird das Ganze doch nur immer aufgeblähter bis es irgendwann platzt
-
Ich frage mich gerade ob die C-Änderungen dann auch von C++ übernommen werden?!... Dann wird C++ wohl zuerst platzen.
Peng!
-
Für C++ gilt das Gleiche.
-
cooky451 schrieb:
Könnte man die Altlasten nicht einfach mal über Bord werfen und einen neuen, sauberen Standard entwerfen? Wer seine alten Programme kompilieren möchte kann doch dann auch alte Compiler nutzen. So wird das Ganze doch nur immer aufgeblähter bis es irgendwann platzt
Das machen die in Java sehr schön.
Die würden sagen, Bool als Bezeichner ist deprecated. Der Compiler hat bei Bool als Bezeichner eine Warnung raus. Man kann einen Programmieranfänger dransetzen, diese Warnungen wegzumachen. Wenige Jahre später wird Bool zum Bezeichner.
-
Mal so als Referenz für Leute die sich anschauen wollen was so in C1x drin sein wird: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf
-
cooky451 schrieb:
Könnte man die Altlasten nicht einfach mal über Bord werfen und einen neuen, sauberen Standard entwerfen? Wer seine alten Programme kompilieren möchte kann doch dann auch alte Compiler nutzen. So wird das Ganze doch nur immer aufgeblähter bis es irgendwann platzt
immerhin haben sie gets entfernt.
Aber die C-Leute sind wegen C99 eh sehr vorsichtig und haben alles optional und mit Flags gemacht.
-
rüdiger schrieb:
Aber die C-Leute sind wegen C99 eh sehr vorsichtig
Was war das Problem an C99?
-
volkard schrieb:
rüdiger schrieb:
Aber die C-Leute sind wegen C99 eh sehr vorsichtig
Was war das Problem an C99?
evtl. die ms compiler, konnten die c99?
-
volkard schrieb:
rüdiger schrieb:
Aber die C-Leute sind wegen C99 eh sehr vorsichtig
Was war das Problem an C99?
Das es nicht bzw. nur teilweise implementiert wurde. Deshalb sind _Complex und VLAs in C1x wohl nicht mehr verpflichtend
-
rüdiger schrieb:
Das es nicht bzw. nur teilweise implementiert wurde. Deshalb sind [...] VLAs in C1x wohl nicht mehr verpflichtend
SCHOCK! VLAs nicht mehr??! Die Entrüstung kann ich gar nicht in Worte fassen.