Verschil C en Ansi C

Pagina: 1
Acties:
  • 243 views sinds 30-01-2008
  • Reageer

  • michiel100
  • Registratie: November 2000
  • Laatst online: 01-09 07:27
Wat is nou precies het verschil tussen 'gewoon(?)' C en Ansi C?

Ik heb al gezocht, maar ik kan nergens vinden wat precies het verschil is.

  • Yucko
  • Registratie: Mei 2000
  • Laatst online: 21:45

Yucko

One clown to rule them all !

Ik dacht altijd dat ANSI C de standaard was. En alle andere varianten zijn weer van ANSI C afgeleidt met enkele aanvullingen.

 iPhone 15 Pro Max Titanium Black 256GB -  iPad Pro 2018 12.9" Space Gray 64GB -  MacBook Air M4 13" 16GB/512GB -  AirPods Pro 3 -  Watch 5 Space Gray LTE -  TV 4K 128GB -  TV 4 64GB -  Wireless CarPlay


  • DarkMatters
  • Registratie: Januari 2002
  • Laatst online: 30-08 08:29
C was de originele versie van de taal, zoals beschreven door Kernigan en Richie (sp?).

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Beetje moeilijke vraag, er is geen verschil. C is ANSI C, maar de implementaties wijken af van de standaard: Borland C, Visual C. Voor zover ik het weet benadert gcc de standaard nog het meest.

  • windancer
  • Registratie: Maart 2000
  • Laatst online: 18-08 22:36
Als er zoiets is als "gewoon C" dan is dat ANSI C. Maar zoals eerder gezegd is er ook zoiets als K&R C, C zoals origineel bedacht door Kernighan en Ritchie. Een groot verschil tussen die twee is de definitie van functies :

ANSI C:
code:
1
2
3
4
int f(int a, double b)
{
...
}


tegenover K&R C:

code:
1
2
3
4
5
6
int f(a, b)
int a;
double b;
{
...
}


Trouwens, wat vrijwel iedereen als "gewoon C" beschouwt, is in begin 2000 veranderd toen de ANSI standaard is geupdate. Deze standaard is bekend als C99 en hierin zit bijvoorbeeld complexe getallen en de mogelijkheid om zulke constructies te gebruiken :

code:
1
2
3
4
for (int i = 0; i < max_index; i++)
{
...
}

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Complexe getallen in C?

edit:

Ah, gevonden, is een nieuw datatype. How rare. :+

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:52
Volgens mij verhouden C en ANSI-C zich als Nederlands en ABN.

Ericston's verhaal is een beetje flauwekul; er zijn hordes compilers die ANSI-C (correct) ondersteunen. Wat vaak nog wel verschilt, is welke library functies er beschikbaar zijn. Dit valt echter buiten de verantwoordelijkheid van de compiler.

C99, die winddancer noemde, wordt nog niet echt breed ondersteund. Ik geloof dat er wel plannen zijn om 't in gcc 3 te implementeren; vooralsnog ondersteund de gangbare gcc nog de oude standaard, als ik me niet vergis.

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
offtopic:
Nou, mijn verhaal is in ieder geval voor het grootste gedeelte niet flauwekul. :)

Verwijderd

Was ANSI C niet bedoeld om het porten naar andere platforms te waarborgen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:01

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gnerk: ik denk dat jij POSIX bedoelt

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: 21-08 17:14
"Gewoon" C is ISO C, wat alleen in het titelblad van de standaard afwijkt van ANSI C [/insecten sex]
Er zijn genoeg compilers ( zelfs MSVC ) die ANSI C volledig ondersteunen. De standaard C library is ook onderdeel van de standaard ( da's waarom het de standaard library heet ), alle ANSI-C compilers supporten die dus ook.
Extra libraries vallen buiten de standaard, daar mag dus verschil in zitten.

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


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Verwijderd schreef op 11 september 2002 @ 22:23:
Was ANSI C niet bedoeld om het porten naar andere platforms te waarborgen?
Nee hoor, K&R gingen er heel vroeg al van uit dat C voor portability moest zorgen. Ik heb bij Bell Labs met de originele K&R docs gewerkt, en daar hadden ze het er al over dat er meerdere machines waren waar C op draaide, 16 en 32 bits (en 36)

ANSI C ging meer over het publiek maken van een standaard waaraan compilers van meerdere fabrikanten getoetst kunnen worden. Dat maakt het voor een groot bedrijf of overheid mogelijk om objectief (-ver) te beslissen over de aankoop van een compiler.

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