Używam tylko funkcji tempnam(), aby uzyskać nazwę katalogu, więc to ostrzeżenie o zabezpieczeniach nie dotyczy mojego przypadku. Jak mogę go wyłączyć? Nie mogłem znaleźć żadnych przełączników, aby to zrobić.Dowolny sposób wyłączenia `tempnam 'jest niebezpieczny, lepiej użyj ostrzeżenia" mkstemp "gcc?
Odpowiedz
Jeśli naprawdę potrzebujesz tylko nazwy katalogu, użyj stałego makra ciąg znaków P_tmpdir
, zdefiniowanego w <stdio.h>
.
Możesz użyć opcji GCC -Wno-deprecated-declarations
, aby wyłączyć wszystkie ostrzeżenia takie jak ta. Sugeruję jednak, abyś poprawnie obsługiwał ostrzeżenie i skorzystaj z sugestii kompilatora.
"Funkcja tempnam() zwraca wskaźnik do łańcucha, który jest poprawną nazwą pliku, i taki, że plik o tej nazwie nie istnieje, gdy tempnam() jest zaznaczone."
Ostrzeżenie powstaje z powodu stanu wyścigu między sprawdzeniem a późniejszym utworzeniem pliku.
Chcesz uzyskać tylko nazwę katalogu? Do czego to powinno być dobre?
Jak już powiedziałeś nieznajomy, możesz wyłączyć to (i podobne ostrzeżenia) za pomocą deklaracji -Niezawierających do użycia.
Potrzebuję utworzyć plik FIFO w katalogu tymczasowym, więc używam dirname (tempnam ...) – jackhab
Dla mnie to nie ucisza tego typu ostrzeżenia. – Jack
U mnie to też nie uciszyło, nawet z -w – FabioCosta
Jest to ostrzeżenie generowane na etapie łączenia, a nie kompilacji, więc to ostrzeżenie nie ma wpływu. (Oddanie go do etapu łącza również nie działa). (In g ++ 4.8.2, przynajmniej) –