Linux - Friheden til at programmere i C: Programmering med GNU/Linux; Version 2.0.20041104 - 2020-12-31 | ||
---|---|---|
forrige | næste |
Den følgende liste over nyheder i ANSI C omfatter både ændringer i selve C-grammatikken (syntaksregler, regler for typekonvertering, nye datatyper), af præprocessing, af krav til oversætter og krav til biblioteker (lib-filer). Desværre er jeg i skrivende stund ikke i stand til at kommentere alle punkter.
Hvad er for eksempel de nøjere regler for Variable Length Arrays, VLAs? VLA er noget, som skulle være nyttigt i forbindelse med de massive beregningsopgaver, som er en vigtig computeranvendelse i dag.
Der er dog mange ting, som kan læses ud af n897.pdf filen omtalt nedenfor. "Pointere med begrænsninger" er en pointer der peger på et objekt (som pointere jo ofte gør). Men alle referencer til dette objekt skal nu gå igennem denne pointer. Derved kan man opnå nogle optimeringer, som ellers ikke er mulige. Oversætteren kan stole på, at denne pointer ikke bliver kopieret eller "aliaset" til en eller anden variabel.
Man kan købe selve ANSI C 1999 standarden i Adobe-PDF format fra ANSI Standard Store. Næsten lige så interessant (måske endda mere interessant) er tankerne bag standarden. Dem kan man finde i dokumentet n897.pdf på http://www.open-std.org/jtc1/sc22/wg14"; teksten på linket er N897, draft rationale available.
Charteret for revisionsgruppen ligger også at hente på ovenstående adresse. Det har (selvfølgelig) været en vigtig del af charteret, at C sproget skal være så kompatibelt med C++ som muligt.
Der er sikkert nogle, som sammen med mig vil begræde, at man ikke blot kan nævne en funktion uden at skrive en prototype for at informere compileren om return type og parametertyper. Men det er nu ikke så slemt endda; der vil i mange år endnu være en switch som tillader ANSI-89 reglerne.
De vigtigste ændringer er:
Funktioner skal erklæres med prototype, inden de anvendes. En ukendt funktion antages ikke at have int som return type.
Implicit integer er ligeledes afskaffet. Tidligere var det tilladt at skrive yxi = 1 øverst i en blok, hvis man ville erklære og initialisere en integer. Det må man ikke mere. En variabel skal erklæres med angivelse af type. Sammenhold dette med, at det nu skal være tilladt at erklære en variabel der, hvor man har brug for den, ligesom i C++.
Inline funktioner skal supporteres af oversætteren (det kan GNU-C allerede).
Så vidt jeg kan forstå vil der også være begrænset support af typetjek i præprocessor aritmetik. Det skal også kunne specificeres, om præprocessor aritmetik er signed eller unsigned.
Kommentarer som i C++ og simula: // dette er en kommentar.
I bedste open doc stil efterlyser jeg bidrag til uddybelse af disse punkter.
Listen er hentet via http://www.ansi.org. Også her http://www.dkuug.dk/JTC1/SC22/WG14 kan man finde oplysninger. Men links har det med at blive gamle. Brug eventuelt www.google.com til at finde nye links til ANSI-C standard.