Quando chiamo NSLog da C++, Xcode si lamenta che la stringa di formato passata a NSLog non è una stringa letterale. Ecco una riga di codice che fa scattare l'allarme:Chiamare NSLog da C++: "La stringa di formato non è una stringa letterale (potenzialmente insicura)"
NSLog(CFSTR("Leaking?"));
Io non sono a conoscenza di un modo per codificare un NSString letterale in C++, e non vedo un avvertimento relativo posso spegnere nelle impostazioni del progetto . C'è un modo per chiamare NSLog da C++ senza attivare questo messaggio? Sto usando Xcode 4.2.1.
Modifica: Questo è veramente il codice C++. Di solito evito Objective-C++, attenendomi a Objective-C o al vecchio C++, perché non c'è documentazione ufficiale su cosa funzioni in Objective-C++ e cosa no. Ho trovato solo vaghi avvertimenti che (per esempio) potrebbero esserci problemi con alcune parti del STL. Uso modelli, STL e altre funzionalità "avanzate" di C++, quindi voglio giocare sul sicuro.
Modifica n. 2, la soluzione: ho appena capito che clang supporta un numero molto maggiore di flag di avviso rispetto a quelli effettivamente documentati. (Dovrebbe essere ovvio dalla lunga lista di avvertimenti che Xcode mi ha offerto.) Ho provato -Wno-format-nonliteral a la gcc, e ora Xcode è felice.
Se si chiama 'NSLog', che fa parte di Foundation, si utilizza Objective-C. Usa '@" Leaking? "' E assicurati che il tuo file abbia un'estensione '.mm'. – Joe
@Joe ... a meno che non intenda Objective-C++? – csl
@csl Ho spostato il commento a una risposta con qualche chiarimento. – Joe