Zitat 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.