Un codice base con cui lavoro ha storicamente cercato - volutamente - per evitare le dipendenze da stdio.h in corso. Ha una propria formattazione e meccanismi di stampa, e quelli sono cosa dovrebbe essere usato al posto di printf ecc.Impedire l'inclusione di stdio.h (o altra intestazione standard)
Ma qualcuno aggiunge una dipendenza ogni tanto che deve farsi notare ed estrarre. Così ho provato a fare un allarme per il più facile dei casi:
#if !defined(NDEBUG)
void printf(float dont_link_with_stdio_h);
#endif
La gente gcc sembrano essere stati pensando lungo le linee di arresto semplici errori di troppo, perché c'è un messaggio utile se fate questo ... se hai incluso <stdio.h>
oppure no.
tipi contrastanti per la funzione 'printf' built-in
C'è un modo per trasformare questo avvertimento off (-fno-builtin
). E ci sono tutti i tipi di approcci che farebbero cose come filtrare il deposito di simboli per cose che non vuoi essere lì ...
Ma c'è una cosa facile da non-avvertire (se non lo facevi include stdio.h) per avvisare qualcuno che ha introdotto un uso improprio di printf?
Non riesci a rimuovere la versione compilata della libreria (.lib) in modo che non venga compilata/collegata? –
@LeeTaylor Preferirei non manomettere l'ambiente di compilazione, che è usato per altre cose che includono questa libreria (e quelle cose sono libere di includere stdio.h se lo desiderano). Sto cercando qualcosa di meno invadente rispetto all'uso del metodo che stavo cercando e aggiungendo '-fno-builtin' ... ad es. qualcosa che può essere fatto all'interno della fonte da solo. – HostileFork
'grep printf * .c'? –