std::array nach C-Array kopieren?
-
Hups, habe schon mit gerechnet, das meine Frage wieder eine tieferes Übel zum Vorschein bringen wird

Die Fehlermeldung lautet
Fehler C4996 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'Könntest Du das mit dem
datanäher erläutern? Dann könnte ich mir auch das Kopieren "ersparen".
-
Hast du die "Fehler"meldung mal gelesen und verstanden?
Die data-Methode gibt dir halt einen Zeiger auf das erste Element des unterliegenden Arrays. Also ganz genau das, was du suchst:
http://en.cppreference.com/w/cpp/container/array/data
http://www.cplusplus.com/reference/array/array/data/
Gibt es, wie gesagt, auch für allerlei andere Container, bei denen das Sinn macht, falls ein std::array mal nicht passend sein sollte.
-
Jupp sorry, hatte Sekunden, bevor Du geschrieben hast, selbst die betreffende Dokumentation gefunden.
-
SeppJ schrieb:
Hast du die "Fehler"meldung mal gelesen und verstanden?
Was bedeutet die Fehlermeldung denn? So wie ich das verstanden habe, wird ohne diese Einstellung kein Fehler bei Überschreiten von array-Größen gemeldet?
Wenn _SECURE_SCL als 0 definiert ist:
Alle Standarditeratoren sind nicht aktiviert (Iteratoren können über die Containergrenzen hinaus verschoben werden, was zu nicht definiertem Verhalten führt).
https://msdn.microsoft.com/de-de/library/aa985965.aspx?f=255&MSPPError=-2147217396
Bzw wenn das gar keine "Fehler"meldung ist, wieso kann das Ding gar nicht erst erstellt werden? Worstcaser gehts doch nicht mehr?
-
Und warum mir dieser "Fehler" nicht wurscht sein kann, liegt einfach daran, das ein anderer User meinen Code so nicht in Visual 2015 ausführen kann.
Was soll ich dem dann erzählen? "Hast Du Dir die "Fehler"Meldung nicht durchgelesen und verstanden?"?
-
Diese checked Iterators Warnung wird bei mir immer sofort deaktiviert wenn sie denn in einem Projekt auftritt. Ob du das auch machst hängt davon ab ob du überhaupt checken Iterators verwenden willst und du dafür mit Microsoft spezifischen Erweiterungen arbeiten möchtest. Wenn nicht dann einfach Warnung deaktivieren.
-
@lemon03
C4996ist ne Warning und kein Fehler.
Verhindert also normalerweise nicht dass das Programm erstellt wird und dann auch funktioniert.Wenn du die Warning nicht bekommen willst kannst du z.B. einfach
memcpyverwenden. Oder auch wie sebi707 die Warning abdrehen. z.B. indem du genau das machst was in der Meldung beschrieben steht, also_SCL_SECURE_NO_WARNINGSdefinieren. z.B. einfach in den Projekteinstellungen.
-
lemon03 schrieb:
Bzw wenn das gar keine "Fehler"meldung ist, wieso kann das Ding gar nicht erst erstellt werden? Worstcaser gehts doch nicht mehr?
/WX aktiviert?
-
lemon03 schrieb:
Und warum mir dieser "Fehler" nicht wurscht sein kann, liegt einfach daran, das ein anderer User meinen Code so nicht in Visual 2015 ausführen kann.
Was soll ich dem dann erzählen? "Hast Du Dir die "Fehler"Meldung nicht durchgelesen und verstanden?"?
Ja, klar.
Ich sehe erfreut, daß Du schnell dazulernst.
-
Na ok. Da sich der Build bei mir nicht fortsetzen lies, dachte ich an eine schlimmere Geschichte. Muß ich nochmal schauen.
Aber wenn es tatsächlich kein Ding ist, dann danke für die Aufklärung
