2016-11-28 4 views
0

Ich habe gerade einige Inkompatibilitäten zwischen meinen getesteten Plattformen mit std :: copysign herausgefunden.Mit std :: copysign mit g ++

Bei einem ersten Test versuche ich in MSVC einige Algorithmen getestet zu bekommen. Jetzt habe ich versucht, diesen C++ (11) Code auf die Xilinx Zynq Plattform (A9 + FPGA) zu portieren.

Dies funktioniert soweit, außer es gibt kein Std :: Copysign einschließlich cmath. Also muss ich copysign ohne den Namensraum verwenden.

Was wäre der richtige Weg, diese Funktion dem Namensraum hinzuzufügen?

PS: Ich möchte nicht die gleichen Dateien auf verschiedenen Plattformen von Hand nur für Namespace Inkompatibilitäten verwalten.

Compile-Flag:

-c -fmessage-length=0 -MT"[email protected]" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -std=c++11 
+0

Welche Compileroptionen haben Sie mit g ++ verwendet? Sind Sie sicher, dass C++ 11 aktiviert wurde? – wasthishelpful

+0

Ich verwende die Xilinx SDK (2016.3), die eine Art Eclipse basiert. Ich verwende die Flags "-c -fmessage-Länge = 0 -MT" $ @ "-mcpu = Cortex-A9-Mfpu = Vfpv3-Mfloat-Abi = Hard-Std = C++ 11" –

+0

können Sie die voller Fehler, wenn Sie Ihren Code erstellen? – Danh

Antwort

0

Sie ein Makro für msvc schaffen könnte.

#if defined(_MSC_VER) 
#define copysign std::copysign 
#endif 

Allerdings sollte C++ 11 den Namespace std haben. Wenn Sie nicht mit C++ 11 kompiliert werden, erhalten Sie vielleicht einen älteren Satz von Bibliotheken? Ich würde nachsehen, ob du es bist. Wenn Sie nicht mit C++ 11 auf Ihrer Plattform kompilieren können, sollte das obige funktionieren. Fügen Sie weitere Präprozessorflags hinzu, um bei Bedarf weitere Plattformen zu targetieren.

Eine weitere Option ist

using namespace std; 

, die beide Fälle abdeckt.

+0

Ich kompiliere mit C++ 11 Auto und einige andere Funktionen funktionieren wie erwartet. Auch das Problem ist nicht MSVC, das Problem ist der Arm gcc in Xilinx SDK verwendet. –

+1

Sie könnten auch 'using namespace std;' da und das würde beide Möglichkeiten abdecken. – user2927848

Verwandte Themen