Wie kann ich feststellen, Visual Studio/Microsoft C compiler zu ermöglichen, Variablen-Deklarationen nach der ersten Anweisung?
Ich habe code, der kompiliert auf dem GNUARM compiler, aber Visual Studio 2010-Themen-Fehler. Das Problem betrifft das deklarieren von Variablen nach der ersten Anweisung in einem C-Sprache-Datei:
main.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 6;
i = i + 1;
printf("Value of i is: %d\n", i);
int j = i * 10; //<-- This is what Visual Studio 2010 complains about.
printf("Value of j is: %d\n", j);
return EXIT_SUCCESS;
}
Folgende code ohne Fehler kompiliert:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 6;
int j; //<-- Declaration is now here, valid according to K&R rules.
i = i + 1;
printf("Value of i is: %d\n", i);
j = i * 10; //<-- Moved declaration of j to above.
printf("Value of j is: %d\n", j);
return EXIT_SUCCESS;
}
Ich bin mit den Standardeinstellungen für das erstellen einer Win32-Konsolen-Projekt. Wenn ich "Compile as" - Eigenschaft auf "Compile as C++ (/TP)", bekomme ich Kompilierungsfehler in einigen Visual Studio header-Dateien. (Rechte Maustaste auf Projekt, wählen Sie Eigenschaften → Konfiguration Eigenschaften → C/C++ → Erweiterte).
Wie sage ich Visual Studio 2010 zu ermöglichen, Variablen-Deklarationen nach der ersten Anweisung, wie C++ oder der aktuellen C-Sprache standard?
- Beim kompilieren mit
/TP
, was sind die "Kompilierungsfehler in einigen Visual Studio header-Dateien"? Ich bekomme auch keine Fehler beim kompilieren deines Beispiels mit/TP
. - Peinlich, kann man nicht. stackoverflow.com/questions/146381/...
- Ich baute die {embedded} code als C++
(/TP)
- und auch als C(/TC)
. Keine Fehler in der Visual Studio-header-Dateien. Komisch. - Vielen Dank für die Referenz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Visual C++ nicht unterstützt C99.
Müssen Sie kompilieren als C++ (und aktualisieren Sie Ihren code entsprechend), oder befolgen Sie die Regeln von C89.
(Ich weiß nicht, welchen Fehler bekommst du beim kompilieren mit
/TP
; ich kann kompilieren, Beispiel erfolgreich mit/TP
wenn ich#include <stdlib.h>
fürEXIT_SUCCESS
; wenn Sie weitere Informationen zu liefern, die ich oder jemand anderes in der Lage sein kann, um zu helfen.)Als Visual Studio 2013, Visual C++ - compiler unterstützt C99-Stil Deklarationen von Variablen. Mehr details finden Sie in:
http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx
Machte ich den gleichen test mit den Standard-Visual-Studio-2010-Projekt, mit dem C-Datei und
/TP
wechseln, und habe die vorkompilierte Header-Fehler. Es kann entfernt werden, durch die Umbenennungstdafx.cpp
zustdafx.c
oder deaktivieren Sie vorkompilierte Header für das gesamte Projekt oder für bestimmte C-Dateien.Ich nicht finden, andere Probleme. Jedoch, diese effektiv wandelt die Sprache C zu C++, das ist nicht Ihre Absicht, denke ich. C ermöglicht, jedoch eine variable definieren am Anfang jeder
{}
block.