Zitat von
Pekel
Ich verstehe nicht so recht, wie ich das mit den Compilern verstehen soll. Meintest du damit, dass die Funktionen je nach Compiler sich verändern? Oder die Programmierweise? :oops:
Die Funktionen aus stdio.h (cstdio), stdlib.h (cstdlib), string.h (cstring), time.h (ctime) , ... sind normalerweise nicht verändert. Zudem besitzt zum Beispiel Visual C++ eine riesige Menge an zusätzlichen Klassen, die anderen Compilern demzufolge nicht bekannt sind.
Kurz gesagt: eine Windows-Forms-Anwendung von Visual C++ wird, sofern sie diese Compiler-spezifischen Klassen benutzt, nicht mit Mingw32 kompilierbar sein!
Um mal bei meinem ASM Beispiel von vorhin zu bleiben - schau dir doch mal folgenden Code an:
Code:
#include <stdio.h>
int main(void)
{
int var1 = 10;
printf("var1 entspricht %d\n", var1);
#ifdef __GNUC__
printf(" ASM-Syntax: AT&T\n");
asm("movl %0, %%eax;"
"addl %0, %%eax;"
: "=r" (var1)
: "0" (var1));
#else
printf(" ASM-Syntax: Intel\n");
asm
{
mov eax, var1
add eax, var2
mov var1, eax
}
#endif
printf("var1 entspricht %d\n", var1);
return 0;
}
Der oben stehende ASM Syntax wird von Compilern wie GCC und Mingw32 benutzt, der unten stehende von Compilern wie MSVC und Borland C++ Builder!
Ausgabe könnte dann wie folgt aussehen (GCC 4.2.3, Ubuntu Linux 8.04):
Code:
var1 entspricht 10
ASM-Syntax: AT&T
var1 entspricht 20
Also würde ich mal sagen der Compiler macht *anfangs* keine großen Unterschiede, da jeder davon ein einfaches "Hello World" kompilieren kann, aber später wirst du dann schon merken, dass es große Unterschiede gibt.
PS:
Wenn du dir das C/C++ Kompendium von Dirk Luis kaufen möchtest, dann schau dir mal das Kapitel 29 an.