[C++] ANSI C++ houdt in... ?

Pagina: 1
Acties:

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
Naar aanleiding van een project dat ik voor een vak aan de unief moet maken dat volledig ANSI C++ compatibel moet zijn, stel ik mij de volgende vraag:
Wat houdt dat dan concreet in (dingen om op te letten, praktische tips)?
Wat moet je doen zodat een programma ANSI C++ is?
Hoe controleer je dat?

Vooral de opmerking van .oisyn in dit draadje over het feit dat atoi blijkbaar geenn ANSI is, baart me nogal zorgen...
Hoe kun je dan weten of functies/libraries voldoen aan de ANSI C++ standaard?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik zei dat itoa () geen ANSI C was, atoi () is prima ANSI C ;)
overigens bedoel ik ISO, geen ANSI. We leven tenslotte niet in de VS

C++ is, als taal en z'n stdlib, gestandaardiseerd. Dat wil dus zeggen dat, mits je je houdt aan de specificaties, het met elke ANSI/ISO C++ compatible compiler en library zou moeten compileren. Wat wel en wat niet standaard is kun je meestal opzoeken in de documentatie van het betreffende platform/compiler (in de MSDN staat bijvoorbeeld voor elke stdlib functie of ie ANSI is of niet, en voor elke compiler extensie staat er "Microsoft specific" bij).

Ook hebben compilers vaak opties om ANSI/ISO compatibiliteit te forceren, en die geven dan een warning of error als je een niet ANSI/ISO functie of extensie gebruikt

[ Voor 5% gewijzigd door .oisyn op 03-11-2003 03:47 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 17:14
Een makkelijke truic is de comeau online compiler te gebruiken. Vor zover bekend is dat de enige 100% ISO-C++ compiler, dwz een compiler die alle legale ISO-C++ compileert. Voor 50$ kun je die downloaden, dan kun je het resultaat ook nog gebruiken ook.

Overigens zou je unief voor 18$ de ANSI standaard kunnen downloaden (ISO maakt 'm, maar de nationale organisaties verkopen 'm dus de ISO kun je niet kopen (8> ).

[ Voor 12% gewijzigd door MSalters op 03-11-2003 18:04 ]

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


  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
@MSalters: bwah ik heb daar niet echt 50$ voor over...

Ik veronderstel dat je met gcc de optie -ansi moet gebruiken om ISO compatibiliteit te forceren?
Heeft er iemand een idee hoe je dat bij de MS Visual C++ 6.0 compiler forceert?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat mag je zelf opzoeken in de documentatie van je compiler :z

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Als je gewoon C++ programmeert zoals je gewend bent is de kans groot dat je ISO/ANSI compatible bezig bent. Hou dat als leidraad en het leven wordt een stuk makkelijker :) .

TheStreme - Share anything with anyone


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 17:14
Om heel eerlijk te zijn, die kans is vrij klein. Bijvoorbeeld, void main() staat in teveel boeken, en is geen ISO C++. (oa Microsoft extensie, en GCC zonder -ansi).

@TS: uni laten betalen? 't Is iets wat ze ook kunnen gebruiken nadat je weg bent, en zij begonnen over ISO C++

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


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

DieterVDW schreef op 03 november 2003 @ 19:00:
@MSalters: bwah ik heb daar niet echt 50$ voor over...

Ik veronderstel dat je met gcc de optie -ansi moet gebruiken om ISO compatibiliteit te forceren?
Heeft er iemand een idee hoe je dat bij de MS Visual C++ 6.0 compiler forceert?
Volgens mij conformeren de standaard PSDK windows-headers niet aan ISO-C, dus lijkt het me sterk dat je VC6 helemaal ISO-compliant krijgt. Mocht dit wel zo zijn: MFC werkt iig niet als ISO :X

Borland C++ Builder heeft iig in de Project Options wel een checkbox "Force ANSI standard", kun je meteen niets meer compileren :D VC6 heb ik hier niet meer dus kan ik niet controleren.

Professionele website nodig?


  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
.oisyn schreef op 03 november 2003 @ 19:23:
Dat mag je zelf opzoeken in de documentatie van je compiler :z
Hehe I knew you'd say that :P

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 17:14
curry684 schreef op 04 november 2003 @ 00:00:
[...]
Volgens mij conformeren de standaard PSDK windows-headers niet aan ISO-C, dus lijkt het me sterk dat je VC6 helemaal ISO-compliant krijgt.
Je programma is na #include <windows.h> natuurlijk toch niet meer ISO-compliant. Strict gesproken maakt dat dus niet meer uit. Het nadeel is dat VC6 in z'n niet-ISO mode meteen echt heel erg niet ISO-C++ is. VC7.x heeft wat dat betreft een veel fijnere controle.

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

Pagina: 1