Problem mit cstddef
-
Hallo liebe Community
ich bin recht neu hier in dem Forum deshalb weiss ich net ob ich hier in diesem Teil mit meinem Problem richtig bin. Deshalb bitte ich im Vorfeld um ein bischen Nachsicht :). So nun zu meinem Problem:
Ich arbeite zur Zeit an einem kleinen Programm mit dem ich gerne einen Frequenzumrichter über den Feldbus Modbus ansteuern möchte. Den Modbusstack habe ich auch schon als Opensource Implementation gefunden. Unter
http://libmodbus.org/ sind die Sourcen zu finden.
Ich benutze MS Visual Studio 2005 unter Windoof XP SP3.
Nachdem ich das Modul modbus.c & modbus.h in mein Projekt geladen habe bekomme ich den folgenden fehler:
c:\programme\microsoft visual studio 8\vc\cstddef(18): error C2143: Syntaxfehler Es fehlt '{' vor ':'
c:\programme\microsoft visual studio 8\vc\cstddef(18): error C2059:
Syntaxfehler ':'Ich konnte die Stelle schon in soweit Eingrenzen:
In der include<stdint.h> aus der modbus.c wird über mehrere weitere includes die cstddef und cstddef.h versucht einzubinden und irgendetwas da läuft nicht richtig. Ich hab aber leider keine Ahnung wie der Fehler zu deuten ist :/.
Kann mir da jemand weiterhelfen bzw. hat jemand von euch Erfahrung mit den Sourcen? Wenn ihr noch weitere Infos braucht bitte bescheid geben was ihr noch wissen müsst.
Bin ziemlich verzweifelt und über jede Hilfe dankbar
-
Das klingt so, als würdest du einen C++ Header einbinden. Endweder cstddef direkt oder indirekt über einen anderen C++-Header der wiederum diesen einbindet.
-
Hi
danke erstmal für deine Antwort. Ich habe noch was entdeckt.
Der Compiler meckert innerhalb der cstddef über die beiden Einträge:using ::ptrdiff_t;
using ::size_t;Also darauf bezieht er seinen Syntaxfehler.
@SeppJ: vielleicht weisst du ja was dem Compiler an den beiden Zeilen net passt?
-
MSVC liefert von Haus aus keine stdint.h mit, es hängt also davon ab, wo deine herkommt.
Das Problem ist letztendlich, dass deine stdint.h C++-Header einbindet, die C++-Code enthalten, den der C-Compiler, den MSVC für .c-Dateien verwendet, nicht versteht (using). Probier's mal mit dem hier: https://msinttypes.googlecode.com/svn/trunk/stdint.h , der wurde für MSVC geschrieben.
Ob es dann allerdings geht, ist ein Stück weit Glückssache. Wenn libmodbus C99 verwendet, bist du mit MSVC aufgeschmissen - das kann der bis heute nicht. Womöglich steht auf der libmodbus-Webseite auch deshalb
So let's run your MinGW!
-
So danke euch für eure Hilfe!
Da meine Programmierkenntnisse leider nicht ausreichen um die open source module richtig einzubinden habe ich mich von ihnen getrennt. Versuche das iwi anders hinzubekommen.
Habe noch viel zu lernen :(.mfg