Używając sprintf, kompilator ostrzega mnie, że funkcja jest przestarzała.Dodaj własne ostrzeżenie kompilatora
Jak mogę wyświetlić ostrzeżenie o własnym kompilatorze?
Używając sprintf, kompilator ostrzega mnie, że funkcja jest przestarzała.Dodaj własne ostrzeżenie kompilatora
Jak mogę wyświetlić ostrzeżenie o własnym kompilatorze?
#pragma message ("Warning goes here")
Na marginesie, jeśli you want to suppress such warnings znajdź identyfikator ostrzeżenie kompilatora (dla nieaktualnych ostrzeżenia, to C4996
) i wstawić ten wiersz:
#pragma warning(disable : 4996
)
Nie robi to jednak dokładnie tego, czego chce Martin, ale chce, aby ostrzeżenie było emitowane, gdy funkcja jest _używana, a nie podczas kompilacji. –
Domyślam się, że moje pytanie mogło być przeczytane w dowolny sposób (przepraszam za to!), Ale ten był tym, czego szukałem. – Warpin
Link only answer * and * link nie jest poprawny. :-( – TobiMcNamobi
Aby oznaczyć funkcję jako przestarzałą, użyj __declspec(deprecated)
, np.
__declspec(deprecated) void f();
Myślę, że właśnie tego chciał OP. – LiraNuna
Pyta o pokazanie własnego ostrzeżenia, a nie określonego * przestarzałego * ostrzeżenia. –
Chociaż nie ma standardowej #warning
directice wiele kompilatorów (GCC tym, VC, Intels i jabłka), wsparcie #warning message
.
#warning "this is deprecated"
Często lepiej jest nie tylko wychować ostrzeżenie (co ludzie można pominąć), ale niech kompilacji całkowicie zawodzą, za pomocą dyrektywy #error
(co jest standardem):
#if !defined(FOO) && !defined(BAR)
# error "you have neither foo nor bar set up"
#endif
MSVC++ 2013 go nie obsługuje –
Nie widzę, że to działa w MSVC++ 2015 lub 2017 albo. – Zitrax
W VC jeśli chcesz ostrzeżenie, aby pokazać się w liczbie ostrzegawczy na końcu zestawienia trzeba użyć tego formatu:
#pragma message(": warning<put what you like here>: blah blah blah")
ważne jest sekwencja: dwukropek, spacja, „wA rning ", coś lub nic, dwukropek", twój tekst ostrzegawczy "
Jeśli chcesz mieć ochotę, możesz dodać plik i numer linii przed pierwszym dwukropkiem, dzięki czemu możesz dwukrotnie kliknąć, aby przejść do kodu (z microsoft.com):
// pragma_directives_message1.cpp // compile with: /LD #if _M_IX86 >= 500 #pragma message("_M_IX86 >= 500") #endif #pragma message("") #pragma message("Compiling " __FILE__) #pragma message("Last modified on " __TIMESTAMP__) #pragma message("") // with line number #define STRING2(x) #x #define STRING(x) STRING2(x) #pragma message (__FILE__ "[" STRING(__LINE__) "]: test") #pragma message("")
Dzięki - zaktualizowałem i skopiowałem - myślę, że to ta sama strona, ale to było jakiś czas temu! – noelicus
myślę, że to powinno działać
void foo() __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README")));
Co sprintf wycofywana mieć do czynienia z tym pytaniem? –
Tylko przykład ostrzeżenia kompilatora, który został wprowadzony przez "użytkownika", a nie czysto wygenerowany przez kompilator. – Warpin