PRODAVE V6.0 Probleme mit VC++

Alexf2d

Level-1
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe folgendes Problem.

Ich möchte über PRODAVE auf S7 über Ethernet zugreifen. Habe die SW installiert und dort ein Beispielprojekt für VC gefunden. Die Datei ProdaveTest.exe gestartet. Es läuft und ich kann mit SPS kommunizieren. So weit so gut.

Jetzt habe ich das Project mit Microsoft Visual Studio 2005 geöffnet und es fängt an… Das Project wurde mit der VC++ 6 Version gemacht und sobald es in die Version 8 konvertiert wird, kann ich das nicht mehr kompilieren, bzw. bekomme eine Fehlermeldung.
Quellcode:
[FONT=&quot]FILE *stream_in = stdin; // stream for input[/FONT]
[FONT=&quot]FILE *stream_out = stdout; // stream for output[/FONT]

Fehlermeldung:
Error C2099: Initialisierung ist keine Konstante.


Hat jemand schon ähnliche Erfahrungen gehabt?
 
Erfahrung habe ich damit keine.
Wegen der Fehlermeldung vermute ich, daß der Compiler Schwierigkeiten hat, den Wert der Konstanten zur Zeit der Übersetzung zu ermitteln.

Ich vermute mal, dein Code sieht in etwa so aus:
{code]
//
// global verfügbare Initialisierte Variablen:
//
FILE *stream_in = stdin; // stream for input
FILE *stream_out = stdout; // stream for output
//
// Programmbeginn:
//
int main (....) {
//
// irgendwelche Variablen von main()
//
int bar;
char foo;
//
// irgendwelche Anweisungen in main()
//
bar=foo/bar*bar;
}
{/code]
Dann sollte Folgendes helfen:
{code]
//
// global verfügbare Variablen, KEINE Initialisierung:
//
FILE *stream_in; // stream for input
FILE *stream_out; // stream for output
//
// Programmbeginn:
//
int main (....) {
//
// irgendwelche Variablen von main()
//
int bar;
char foo;
//
// nun initialisierst du diese Variablen in main:
//
stream_in=stdin;
stream_out=stdout;
//
// irgendwelche Anweisungen in main()
//
bar=foo/bar*bar;
}
[/code]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Tipp. O Wunder, es läuft!

Aber warum hat hier der VC++ 6 Compiler nicht gemeckert? Die stdin z.B. wird in stdio.h als:
[FONT=&quot]#define[/FONT][FONT=&quot] stdin (&__iob_func()[0]) [/FONT]definiert.

Die __iob_func() als:
[FONT=&quot]#ifndef[/FONT][FONT=&quot] _STDIO_DEFINED[/FONT]
[FONT=&quot]_CRTIMP FILE * __cdecl __iob_func(void);[/FONT]
[FONT=&quot]#endif[/FONT][FONT=&quot] /* _STDIO_DEFINED */[/FONT]

So wie ich das verstehe, muss der globalen Zeiger bei seiner Deklaration auf jedem Fall auf etwas Konstantes zeigen. Und hier war das nicht der Fall.
 
Zurück
Oben