Jump to content

Recommended Posts

Geschrieben

Hallo TF-Team,

 

bei den neuen C++ Bindings bekomme ich eine neue Compiler-Warnung auf dem Raspi, die bei meinen Settings zum Compile-Abbruch führt (-O2 -Wall -Werror):

ip_connection.c:49:3: error: ‘gcc_struct’ attribute directive ignored [-Werror=attributes]
ip_connection.c:60:3: error: ‘gcc_struct’ attribute directive ignored [-Werror=attributes]

 

Das stammt von diesem Code

#elif defined __GNUC__
        #define ATTRIBUTE_PACKED __attribute__((gcc_struct, packed))

 

Im Header dazu ist eine ähnliche Stelle, dort wird aber nur packed verwendet und nicht gcc_struct,packed. Die packed Option sollte überall gleichartig definiert sein - oder nicht?

(Interessanterweise führt das bei OpenSuse mit der identischen Compiler-Version nicht zu einer Warnung)

 

Und noch eine Stelle, die zu einer Warnung führt. Daher wäre folgende Änderung in ip_connection.c noch sinnvoll (hatte ich bisher von Hand geändert):

1275,1276c1275
<                       length = ((PacketHeader *)pending_data)->length;
---
>                       PacketHeader *ptr = (PacketHeader *)pending_data;
>                       length = ptr->length;

Geschrieben

Hm, gcc_struct kennt GCC nur für x86. Und ja, gcc_struct sollte auch im Header gesetzt werden, das ist aber nicht kritisch, da das Problem für das ich gcc_struct eingefügt hatte nur die .c Datei betrifft.

 

Als kurzfristigen Workaround kannst du für nicht-Windows Systeme das gcc_struct einfach streichen. In der nächsten Bindingsversion ist dass dann behoben.

 

Welche Warning macht denn die "length = ((PacketHeader *)pending_data)->length;" Zeile?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...