Ich habe ein Problem mit einem in meinem C-Code definieren: für Tests Zweck, ich brauche vsnprintf
-_tests_vsnprintf
während der Kompilierung zu definieren, wie:MSVC 1900 und definiert vsnprintf
gcc -Dvsnprintf=_tests_vsnprintf file.c
Diese erlauben Sie mir einen Fehler zurückzugeben von ein vsnpintf
Aufruf, um das Fehlermanagement in meiner App zu testen. Es funktioniert gut unter Linux, aber baut nicht auf Windows auf, MSVC 1900 (Visual Studio 2015) beschwert sich über Makroredefinition (C1189).
Der Fehler von diesem Code kam in stdio.h
:
#if defined vsnprintf
...
#error Macro definition of vsnprintf conflicts with Standard Library function declaration
#endif
Ich weiß nicht, wie man mit der minimalen Anzahl von Änderungen des Fehlers loszuwerden.
Können Sie mir helfen?
Die Definition von Namen der Standardbibliothek ruft undefiniertes Verhalten auf. Sie sind für die Implementierung reserviert. So beginnen Namen mit Unterstrich auf Dateiebene. Kurz gesagt: Sie dürfen dies nicht tun und gcc "essen" ist nur zufällig (es ist jedoch nicht garantiert, dass Sie so arbeiten, wie Sie es erwarten). – Olaf