2016-07-06 4 views
0

Ich schreibe eine C++ - Anwendung, die eine C-Bibliothek verwendet, die eine Schwanz-aufgefüllte Struktur in einem ihrer Header definiert. Ohne zu sehr ins Detail zu gehen, sieht es etwas wie folgt aus:Wie behandelt man Warnungen über Tail-gefüllte Arrays in C++?

struct MyStruct { 

    // ... other members 

    // The last member, a tail-padding array 
    MyType myBuffer[]; 
} 

Ich benutze -Wall -Wextra -Wpedantic -Werror mit g++ und -std=c++0x.

Leider g++ gibt mir eine Warnung über das Array:

error: ISO C++ forbids zero-size array 'myBuffer' [-Wpedantic] 

Was ist der richtige Weg, damit umzugehen?

Ich weiß, dass ich die Warnung selbst durch Zugabe eines pragma zu dem Header unterdrücken kann:

#pragma GCC diagnostic ignored "-Wpedantic" 

Aber das fühlt sich nicht richtig. Was schlägst du vor?

Antwort

0

Sie könnten

  • Entfernen Sie die Größe Null-Array.

  • Build ohne -Wpedantic (möglicherweise nur für diese Datei).

  • Erstellen ohne -Werror und ignorieren Sie die Warnung.

  • Bauen Sie den Code als C.

+2

Es ist C noch nicht gültig ++. Wie wäre es, C-Code als C-Code zu kompilieren? – juanchopanza

Verwandte Themen