Toon posts:

Visual C++.Net 2003 - C99 support?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg nu (aan de UvA (Programmeren 2)) C als programmeertaal aangeleerd. Omdat ik al Java redelijk onder de knie heb en al eerder met C/C++ gestoeid heb (nooit echt serieus maar toch) heb ik het boek C A Reference Manual (http://www.CAReferenceManual.com)van Harbison & Steele gekocht om me snel de taal eigen te maken.

Ik zoek nu eigenlijk een goede compiler die voldoet aan de ISO standaard, het liefst C99 maar C89 is ook goed. Ik kan via school aan Visual Studio .Net 2003 komen, maar ik vraag me af of de C++ compiler van Microsoft ook C99 aan kan. Ik heb hier naar gezocht maar niet veel gevonden.

Als ik het goed begrijp, kan je C ook als subset van C++ zien en zou dus elke C code door een C++ compiler (eventueel met kleine aanpassingen) moeten kunnen worden gecompileerd. Maar aan welke standaard voldoet zo'n subset dan?

De reden dat ik een compiler/IDE zoek die voldoet aan de ISO standaard is dat het primair onder een UNIX systeem moet kunnen werken, maar ik vind gcc/cygwin (ik werk thuis onder win2000) niet echt een optie omdat ik een IDE met een soort van intellisense heel handig vind.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
GCC ondersteunt zowel de C89 als C99 standaarden; (gcc -std=iso9899:1999 -pedantic, voor C99). Ik neem aan dat dit ook onder Windows wel werkt.

Hoe het met Visual C++ zit, zou ik niet precies weten, maar je zou natuurlijk gewoone zo af en toe met GCC kunnen controleren of de boel nog portable is. Waarschijnlijk zijn er maar een beperkt aantal taalconstructies niet toegestaan en heb je het zo afgeleerd om die te gebruiken.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
C99 wordt voor zover ik weet nog door geen enkele compiler ondersteund. Microsoft heeft duidelijk laten weten dat ze er ook geen plannen voor hebben.

C99 is nieuwer dan C++, en er is effectief een fork opgetreden. Zelfs C89 is geen subset, maar wel bijna: het kost moeite om een redelijk C programma te schrijven dat geen C++ is. C99 is veel erger; als de C commissie het een subset had willen houden dan hadden ze alleen een grotere subset van C++ kunnen kiezen.

Voor professioneel gebruik is Intel een optie: ICC integreert met de MSVC IDE, en kan ook voor Linux compileren. Moet het nog breder portable zijn, dan heb je de keus tussen Como en GCC.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
MSalters schreef op 29 May 2003 @ 23:33:
C99 wordt voor zover ik weet nog door geen enkele compiler ondersteund.
Dat is misschien waar, maar er wordt wel aan gewerkt, en GCC is er al heel ver mee. (Zie ook http://gcc.gnu.org/gcc-3.1/c99status.html ). Volledige ondersteuning voor C++ is ook vrij zeldzaam; toch zijn C++ compilers in de praktijk goed bruikbaar.
Voor professioneel gebruik is Intel een optie: ICC integreert met de MSVC IDE, en kan ook voor Linux compileren. Moet het nog breder portable zijn, dan heb je de keus tussen Como en GCC.
Ik neem aan dat je hier Comeau bedoelt. :) (Beetje moeilijk zoeken voor de TS anders).

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Soultaker schreef op 30 May 2003 @ 16:07:
Dat is misschien waar, maar er wordt wel aan gewerkt, en GCC is er al heel ver mee. (Zie ook http://gcc.gnu.org/gcc-3.1/c99status.html ). Volledige ondersteuning voor C++ is ook vrij zeldzaam; toch zijn C++ compilers in de praktijk goed bruikbaar.
C99 is voor een behoorlijk deel standaardisatie van bestaande C89 extensies geweest; GCC voldeed dus vaak aan de standaard op het moment dat C99 uitkwam. Als de TS niet expliciet om ISO-standaard C99 had gevraagd had ik niet op het verschil gewezen.

Sowieso vraag ik me af welke nieuwe features uit C99 je nodig hebt, als je het al niet weet. VLAs zijn een zeldzaam voorbeeld (maar dat zit dus nog niet in GCC). De wiskundigefeatures zijn primair voor specialisten.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein