Ich habe einen Code, der viel von int nach void * und umgekehrt (es ist mir egal, ob es hässlich ist. Ich mag generische Sachen)
Beispiel:
%Vor%aber wenn ich kompiliere, bekomme ich ein Bajillion
%Vor%Warnungen. Gibt es eine Markierung, die besagt, dass gcc diese spezielle Warnung nicht ausgeben soll?
Ich kompiliere mit -Wall, also bin ich mir nicht sicher, ob ich das so einfach wegmachen kann
nehmen Sie einfach die Flagge, die der Compiler Ihnen gibt und schlagen Sie ein "Nein" davor tut den Trick!
%Vor%Im Interesse anderer, die möglicherweise nach einer Antwort wie ich suchen:
Wenn Sie kein zusätzliches Kompilierungsflag hinzufügen möchten, weil Sie ein Interview möglicherweise versehentlich an einer void * -Volume-Stelle widersprechen, können Sie das folgende Snippet verwenden, um einen Cast von einem int in ein void * where zu erzwingen Sie sind sicher, dass Sie wollen, dass es passiert, und dann wird der Compiler Sie nicht über die Besetzung ärgern:
%Vor%Stellen Sie sicher, dass stdint.h enthalten ist, damit Sie Folgendes tun können:
%Vor%Die Warnung weist darauf hin, dass Ints schmaler als Zeiger sind, sodass Sie Informationen verlieren, wenn Sie von einem Zeiger auf einen Int-Wert umwandeln. Wie oben vorgeschlagen, verwenden Sie uintptr_t. Das ist ein ganzzahliger Typ, der so breit wie ein Zeiger ist. Wenn Sie gezwungen werden, int zu verwenden, dann sind Sie SOL. "Generisch" == kaputt.
Tags und Links c gcc void-pointers