Also von einer ANSI norm für C++ wüsst ich aber ;-)
C++ ist kein ansi standart. Einzig und alleine C ist ANSI standartisiert, und selbst da gibt es noch weitere standarts.
Aber solange du ANSI-C Programmierst wirst du außer eben mit den erwähnten APIs kaum probleme haben.
Und C++ ist auch zu einem großen teil standartisiert, allerdings erlaubt C++ gegenüber C einige ausnahmen bei der programmierung die nicht überall gleich standartisiert sind
hier ist z.B. die FOR schleife als gutes beispiel zu sehen
for(int i = 0; i < 100; i++) {}
Diese schleife ist in ANSI-C NICHT erlaubt. denn hier wird die variable in der schleifen definition deklariert. das erlaubt ANSI-C Aber nicht. C++ hingegen läst es zu, und damit gibt es ein problem.
nämlich gibt es compiler die annehmen das die deklaration zur schleife dazu gehöhrt. also so:
Code:
{
int i = 0;
while(i < 100) {
{/* code hier*/}
i++;
}
}
es gibt aber auch welche die annehmen das es nicht zur schleife gehöhrt,
so:
Code:
int i = 0;
{ while(i < 100) {
{/* code hier */ }
i++;
}}
Nun das führt dann zu problemen wenn man mehrere schleifen untereinander hatt
Code:
for(int i = 0; i < 100; i++) {}
for(int i = 0; i < 200; i++) {}
die einen compiler, die die ich zuerst aufgeführt habe, werden diesen code problemlos abarbeiten, die andere sorte wird sich über doppelt definierte variablen beschweren. bei der 2. sorte muss es so aussehen
Code:
for(int i = 0; i < 100; i++) {}
for( i = 0; i < 200; i++) {}
Man sieht schon das es da zu differenen kommen kann.
Das ist auf jedenfall ein wichtiger punkt der zu beachten ist wenn man für mehrere compiler programmiert...
entweder explizit die variable vor der schleife deklarieren wie es in ANSI-C pflicht ist.
Code:
int i;
for(i = 0; i < 100; i++) {}
oder die deklaration explizit in die schleife hinein zwingen, das geht so:
Code:
{ for(int i = 0; i < 100; i++) {}}
ds erinnert dann zwar n wenig an lisp aber immer noch besser als probleme mit dem compiler.