static const char * - definiert, aber nicht verwendet
Wir definieren eine const static char
Zeiger in jeder header - (.h) und die Quelle (.cpp-Datei) zu erfüllen mit der Firma coding-standards.
static const char * one_time_param = "ABCDEFG";
Beim kompilieren, wird der compiler die Generierung Menge "definiert, aber nicht verwendet" - Warnungen. Hat jemand eine Lösung für dieses Problem bitte?
-Wno-unused-parameter
Mithilfe der oben genannten compiler-flag, können wir unterdrücken diese Warnungen. Aber, dies unterdrückt auch einige andere ungenutzte Parameter, die seine Aufmerksamkeit erfordern könnten. Wir haben versucht, diese Lösungen, die funktionieren nur für die Parameter der Funktion.
Q_UNUSED
in Qt, und
#define UNUSED(x) ((void)(x))
Vorherigen Frage ähnlicher Art:
Wie kann ich ausblenden "definiert, aber nicht verwendet" Warnungen beim GCC?
- Wow, das ist eine schlechte coding standard. Was ist die Zeichenfolge verwendet?
- Was ist falsch mit stackoverflow.com/a/386273/464581
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste - die Firma coding standards sind wohl Platzverschwendung. Wenn du gehst, das zu tun, verwenden Sie ein array statt einer
char *
so speichern Sie nur die Daten und nicht die Zeiger und die Daten:Nächsten, dies ist vermutlich für die Datei-Identifikation - das ist zumindest das, was ich verwenden es für. Es gibt mehrere Dinge zu beachten, aus Erfahrungen gelernt, über eine Reihe von Jahren. (Ich mag noch einbetten version zahlen in der source-Dateien - ich habe noch nicht mit ganzem Herzen bewegt DVCS, weil dieser.)
Ich bin derzeit mit Namen, basierend auf Datei-name:
jlss_id_filename_c[]
etc.AT&T-SVR4-C-compiler und support-software unterstützt eine
#ident
Richtlinie:Den compiler enthalten die strings in einem 'Kommentare' - Abschnitt in der Objekt-Datei und ein tool (
mcs
) zum Bearbeiten der Kommentare Abschnitt (Optionen-d
zu löschen und es-c
zu komprimieren, IIRC). Dieser Abschnitt war Teil der mit binären, aber nicht in den Speicher geladen, zur Laufzeit.An einem Punkt in der GCC-Entwicklung, in Verbindung mit dem Kommandozeilen-Optionen, die ich hatte, bekam ich Warnungen, wenn ich erklärt sowie definiert die variable, also meine "Vorlage" für neue Quellcode-Datei erzeugt:
Allerdings habe ich normalerweise entfernen Sie die Erklärung in diesen Tagen, und nicht bekommen, eine compiler-Warnung.
Als eine alternative zur Verwendung des Datei-Namen als Grundlage von Variablen-Namen, Sie könnten erzeugen einer UUID oder GUID-name ist in hex und verwenden, die als name der Variablen mit einem Präfix zu gewährleisten, erstes Zeichen ist Buchstabe.
Im Header, die Sie nicht wollen, dass das material definiert, die in jeder Quellcode-Datei enthält die header, weil (a) es wird zu einem merklichen (aber nicht unbedingt wichtige) overhead auf dem Programm Größe, und (b) Sie können sich nicht mehr vermehren definieren der globalen Variablen (Sie können multiplizieren erklären Sie; dass ist kein problem). So, mein Header haben eine Strophe wie:
Dann, wenn ich möchte, dass die Header zu definieren, der die Werte, ich habe
#define MAIN_PROGRAM
an der Spitze der entsprechenden Quelldatei. Zum Beispiel vom Lauf -what errno
für ein Programm, dass Namen, bekomme ich die Ausgabe:Old-style
Dies ist eine komplette (und sehr nützlich) - Programm zur Veranschaulichung der alte Stil des Geschäfts.
NB: Wenn kompiliert wird, der version-string ist nicht im Lieferumfang enthalten ist das binäre (oder der Objekt-Datei). Derzeit nicht geben mir keine Warnung beim kompilieren mit GCC 4.6.1 kompiliert auf Mac OS X 10.7.2:
Wenn ich
what al
bekomme ich keine Identifizierung Ausgang.Es ist in der Regel const Zeiger auch in diesem Fall
so versuchen, zu verwenden:
Werfen Sie einen Blick auf
__attribute__((used))
.Wird die variable immer verwiesen werden, die von einigen externen Dienstprogramm für die Prüfung der ausführbaren Datei, oder ist es nur etwas, das Sie muss in der Quelle?
Wenn Sie es gerade haben müssen, in die Quelle, und es muss nicht in die kompilierte ausführbare Datei, warum nicht
#if
es aus:Den zusätzlichen Vorteil dieser Methode ist, dass Sie müssen sich keine Gedanken mehr über den Namen Auseinandersetzungen in der header-Dateien.
Konnte man immer hack um ihn herum. z.B.
if (one_time_param[0] == one_time_param[0]);
Minimalen berechnungsaufwand, und es sollte die Warnung entfernen. Es ist möglich, dass diese Linie würde optimiert werden, um eine no-op, denn es ist von Natur aus sinnlos, die Programm.
Es hängt davon ab, wie elegant die Lösung sein. Vielleicht kann jemand empfehlen, ein compiler-flag, das werde loswerden der Warnung.
Id
tag undident
Programm um herauszufinden, welche revision welche Datei stiegen in das Programm. Gut, Sie können auch speichern Sie einige Urheber gibt, oder was auch immer. Dies ist eine sehr gängige Praxis.Definieren, diese in einem einzigen header, definieren Sie eine einzelne inline-Funktion in der Kopfzeile auf "Get" den Wert des Zeigers, und dann schließen Sie diesen header, wohin Sie müssen, die definition.
In eine Globale header für Ihr Projekt erklären, ein makro wie:
Dann in den Dateien sagen:
Scheint zu funktionieren. Was immer man denken mag über Makros und token einfügen, zumindest mit einem makro, das Sie in der Lage sein, diese Dinger zu finden und loszuwerden von Ihnen, wenn die Menschen erkennen, Sie sind dumm. <zuckt mit den Schultern>
one_time_param.h
one_time_param.cpp
Dann one_time_param.h in jeder & jeder header-und source-Datei.
<kratzt Kopf> dies natürlich nicht funktionieren, wenn Sie es brauchen
static
.