Von dem, was ich verstehe, #define x y
und const int x = y;
sollte identisch unter dem Visual Studio-Compiler funktionieren, aber const int x = y;
ist die bevorzugte Methode.Problem mit const vs #define in Visual Studio
Der C-Code Ich habe sieht wie folgt aus etwas:
static const int x = 100000;
void SomeFunction(...)
{
volatile static int y = x;
...
}
Das Problem mit der Erklärung von y ist. Wenn ich ein #define
für x verwende, dann gibt es keine Probleme, aber die Verwendung des obigen Codes führt dazu, dass der Compiler mit "Fehler c2099: Initialisierer ist keine Konstante" zurückkehrt.
Ich versuche, von der Befehlszeile zu kompilieren, und ich verwende keine Compiler-Flags, also bin ich mir nicht sicher, ob ich ein Flag setzen muss, damit der Compiler das const - or optimiert wenn ich auf irgendeinen Sonderfall stolperte.
Kompilieren des Programms als C++ - Programm funktioniert auch, aber ich würde das lieber vermeiden, wenn möglich.
Beachten Sie, dass wenn Sie #define verwenden, x nicht explizit eingegeben wird ... –
Ihre Probe kompiliert für mich gut. – zdan
Kompilieren Sie es als eine C-Datei und nicht als eine CPP-Datei? – Swiss