2011-01-07 3 views

Antwort

0
CL.exe /Tpfilename 

Es bedeutet "wie C++ kompiliert, unabhängig von der Erweiterung".

Oder, um es anders auszudrücken, was Sie tun, ist in C illegal, also beklagt es sich natürlich. Entweder ändern Sie es in C++ oder erzwingen Sie, dass es als C++ gelesen wird.

+0

Mischen von Code und Deklarationen war in C seit mehr als 10 Jahren nicht illegal - es ist nur, dass MS keine neueren Versionen des C-Standards unterstützt – Christoph

+0

Versucht, dies mit/TP zu tun, und es schien nicht zu funktionieren . – kujawk

0

Sie können/TP verwenden, um den Compiler zu zwingen, sie als C++ - Dateien zu kompilieren. Ich bin mir nicht sicher, ob es das ist, was Sie wollen.

+0

schien nicht für mich arbeiten, ich habe es versucht, bevor ich meine Frage gestellt. – kujawk

2

In Standard C können Sie Variablen nicht an einer beliebigen Stelle, sondern zu Beginn deklarieren. Dies unterscheidet sich von C++, wo Variablen überall deklariert werden können.

Also müssen Sie die Dateien so kompilieren, als wären sie C++ über /TP. Weitere Informationen finden Sie unter this article.

+8

In C99 können Sie. Microsoft hat gerade entschieden, es nicht zu unterstützen. – delnan

+0

@delnan Ah ja, guter Punkt. – chrisaycock

+0

Ich wünsche mir wirklich, dass, selbst wenn sie C99 immer noch nicht unterstützen würden, MS zumindest diesen einen Teil davon als "Erweiterung" nach C bringen würde. Hey - das taten sie für "//" Kommentare! –

5

In C89 und früher müssen alle Block-Scope-Variablendeklarationen vor allen Anweisungen stehen. C99 hat diese Regel geändert, so dass Deklarationen und Anweisungen wie in C++ gemischt werden können.

Leider hat Microsoft gewählt, C99 in Visual Studio nicht zu unterstützen und hat keine Pläne für AFAIK.

Verwandte Themen