Ich versuche, dbus-1 in einem Projekt zu kompilieren mingw32-gcc, erhalte ich einen Compiler-Fehlerdbus-1 gcc-Fehler: erwartet '', '' oder ')' vor 'Struktur'
error: expected ';', ',' or ')' before 'struct'.
Soweit ich sagen kann, ist die betreffende Zeile ein Funktionsaufruf. Dies ist ein Auszug aus dem Makefile-Log:
` c:/MinGW/include/dbus-1.0/dbus/dbus-message.h:73:95: error: expected ';', ',' or ')' before 'struct'
DBusMessage* dbus_message_new_method_call(const char *bus_name, const char *path, const char *interface ,const char *method);`
hier ist der Auszug aus der dbus-message.h Header-Datei:
#if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION)
#error "Only <dbus/dbus.h> can be included directly, this file may disappear or change contents."
#endif
#ifndef DBUS_MESSAGE_H
#define DBUS_MESSAGE_H
#include <dbus/dbus-macros.h>
#include <dbus/dbus-types.h>
#include <dbus/dbus-arch-deps.h>
#include <dbus/dbus-memory.h>
#include <dbus/dbus-errors.h>
#include <stdarg.h>
DBUS_BEGIN_DECLS
/**
* @addtogroup DBusMessage
* @{
*/
typedef struct DBusMessage DBusMessage;
/** Opaque type representing a message iterator. Can be copied by value, and contains no allocated memory so never needs to be freed and can be allocated on the stack. */
typedef struct DBusMessageIter DBusMessageIter;
/**
* DBusMessageIter struct; contains no public fields.
*/
struct DBusMessageIter
{
void *dummy1; /**< Don't use this */
void *dummy2; /**< Don't use this */
dbus_uint32_t dummy3; /**< Don't use this */
int dummy4; /**< Don't use this */
int dummy5; /**< Don't use this */
int dummy6; /**< Don't use this */
int dummy7; /**< Don't use this */
int dummy8; /**< Don't use this */
int dummy9; /**< Don't use this */
int dummy10; /**< Don't use this */
int dummy11; /**< Don't use this */
int pad1; /**< Don't use this */
int pad2; /**< Don't use this */
void *pad3; /**< Don't use this */
};
DBUS_EXPORT
DBusMessage* dbus_message_new (int message_type);
DBUS_EXPORT
DBusMessage* dbus_message_new_method_call(const char *bus_name, const char *path, const char *interface ,const char *method);
Ich konnte nicht herausfinden, warum der Compiler denkt Schnittstelle eine Struktur ist. Beim Betrachten der c-Quelle und der anderen Header scheint es wie ein Char-String-Zeiger zu sein.
alle Vorschläge werden sehr geschätzt.
Egal welche Linie 73 ist, überprüfen Sie die * Runde * davor und suchen Sie nach einem fehlenden Semikolon. – WhozCraig
Vorschlag: erweitern Sie Makros manuell, um zu sehen, was der "tatsächliche" c-Code sein wird, wenn die Fehler-/Zeilennummer keinen Sinn ergibt. Makros sind oft eine Quelle von Syntaxfehlern, besonders wenn Sie Dinge wie "DBUS_BEGIN_DECLS" tun und Blöcke von Inline-Code mit Makros ausblenden. –