Ich kompiliere mein Projekt mit -Werror
, um sicherzustellen, dass mein gesamter Code ohne erkennbare Warnungen ist. Mein aktuelles Projekt hat jedoch eine Abhängigkeit von Drittanbietern, die ein Problem enthält, das eine Warnung auslöst - und diese Warnung schlägt aufgrund des Flags -Werror
fehl.Wie ignoriere ich "nutzlose Speicherklasse" mit gcc mit -Werror?
Ich möchte die -Werror
Flag verwenden und ich möchte nicht das Drittanbieter-Paket korrigieren. Gibt es eine Möglichkeit, diese Warnung zu ignorieren?
Die Codezeile, die den Fehler generiert, ist eine Strukturdefinition mit einem "dangling" typedef.
typedef struct my_data_obj {
char* data;
uint32_t data_size;
};
Dies ist offensichtlich ein Fehler - aber ich jede pragma
oder eine solche Mechaniker die Warnung von dieser Header-Datei erzeugt ignorieren nicht finden können. Irgendwelche Ideen?
EDIT: SOLUTION
Obwohl ich Florian Weimer Antwort bin zu akzeptieren, weil es die Frage am ehesten Antworten es ist nicht die eigentliche fix ich mit erledigt. Ich beschreibe das unten. Durch das Einfügen der Header als System-Header habe ich genau das gemacht, was ich tun wollte - den Fehler unterdrücken, ohne das Paket reparieren zu müssen.
Was ich schließlich getan habe, war eine Patchdatei zu erstellen und diesen Patch jedes Mal anzuwenden, wenn das Projekt erstellt wird.
Eigentlich würde ich einen * echten * Fehler betrachten, der behoben werden muss. Warum möchtest du es deaktivieren, anstatt das Problem tatsächlich * zu beheben *? –
Jedes lokale Patching macht nachfolgende Importe von Upstream schwieriger. Ich kann verstehen, warum Leute das nicht machen wollen. –
Weil es zu reparieren ist trivial - und ich würde gerne sehen, ob es eine Möglichkeit gibt, dies zu ignorieren, da es sicherlich ohne "-Werror" kompiliert. – MatUtter