2017-06-11 2 views
-1

In meiner iOS Cocos2dx App, std :: bind scheint nicht mit 4 gebundenen Argumente (zu einer statischen Funktion 4-Parameter) zu bewältigen. Das vierte Argument ist immer Unsinn.Maximale Anzahl von Argumenten für std :: bind in clang

Wie kann ich in XCode (mit Clang) die maximale Anzahl der Argumente für Std :: Bind einchecken? Kann ich es ändern?

Oder ist es eine Einstellung in Cocos?

+2

Es sollte in der Lage sein, theoretisch unendlich viele Argumente zu behandeln. Wenn Sie versuchen, ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und zu zeigen, können wir Ihnen vielleicht sagen, was Sie falsch machen. –

+0

Danke, das ist alles, was ich jetzt wissen wollte. –

+0

Ich mag es, meine eigenen Probleme zu lösen, wenn ich kann, minimale Fragen zu stellen. Ich verstehe nicht, was falsch ist, wenn ich wissen möchte, wie man etwas in Compiler-Einstellungen überprüft (zu der Person, die diese Frage mit -1 beantwortet hat). Wenn ich die ersten beiden Sätze gestrichen hätte - ohne das Problem zu erwähnen, das ich hatte - würde die Frage gültig werden? –

Antwort

0

OK, Das Problem war nicht in zu viele Parameter, sondern in der Tatsache, dass ich C-artige Arrays für 3. und 4. Parameter übergeben. Wie ich herausgefunden habe, haben C-artige Arrays kein spezifiziertes Kopierverhalten in C++ 11, das für std :: bind benötigt wird.

Was lustig ist, ist, dass das 3. Argument immer korrekt war, und das Problem war nur mit dem 4. - das brachte mich dazu, diese Frage zu stellen.

+1

Was meinst du mit "spezifiziertes Kopierverhalten"? – user2079303

+2

Das Übergeben von Zeigern an Daten, die später nicht mehr verfügbar sind oder zerstört werden, führt immer zu * undefiniertem Verhalten *. Und leider ist eine der Möglichkeiten von UB, dass es scheinbar gut funktioniert. –