Dummy übergeben
-
Hallo!
Man kennt es ja, manche Funktionen wollen unbedingt ein Argument beschreiben, auch wenn der Wert dann gar nicht benötigt wird (WinAPI zB.) und bei nem nullptr failed die Funktion, also muss man ne Dummyvariable anlegen.
Man könnte auch das machen:
template<unsigned int bytes> std::array<unsigned char, bytes> Dummy() { return std::array<unsigned char, bytes>(); } Dummy<4>().data() // der Funktion übergebenAber geht das nicht einfacher? Und warum hat C++ keine anon. arrays/structs?
-
Einfacher? Du meinst so?
foo(std::array<unsigned char, 4>().data());Oder so?
template <std::size_t Size> using bytearray = std::array<unsigned char, Size>; foo(bytearray<4>().data());
-
Hat man da nicht Probleme mit dem Alignment?
Ich würd eher:template <typename T> T* give_me_lvalue() { static T val; return &val; }verwenden, wenn es denn unbedingt sein muss.
WinAPI-Funktionen u.ä. sollte man eh mit RAII abkapseln und da stören die Dummy-WORDs/floats etc auch nicht.
-
template<std::size_t bytes> std::array<unsigned char, bytes> Dummy = {};Hat man da nicht Probleme mit dem Alignment?
Äh, was?
-
Arcoth schrieb:
template<std::size_t bytes> std::array<unsigned char, bytes> Dummy = {};Hat man da nicht Probleme mit dem Alignment?
Äh, was?
So wie ich den TE verstanden habe, regt er sich darüber auf, dass es viele WinAPI-Funktionen gibt, die Adressen von Variablen verlangen, wo sie dann irgendwelche Werte reinschreiben. Dafür muss man dann Dummys anlegen, obwohl man sich gar nicht für die Werte interessiert. Zur Vermeidung hat er sich diese Idee überlegt.
Ich denk aber, dass es da Probleme gibt, wenn man da jetzt irgendwelche ints reinschreiben will oder so.
-
Also so wie ich das verstanden habe meint er schon char-arrays, ansonsten geht das so nicht, da hast du recht.
-
So wie ich es verstanden habe, hat der TE nicht vor, für
int* char*zu übergeben, sondern immer ein Dummy vom entsprechenden Typ.
-
Arcoth schrieb:
So wie ich es verstanden habe, hat der TE nicht vor, für
int* char*zu übergeben, sondern immer ein Dummy vom entsprechenden Typ.Hat Stephan T. Lavavej nicht auch mal so etwas gemacht, in Verbindung mit Containern? Bin mir nicht ganz sicher, aber es könnte der
pretty_printergewesen sein.