In C/C++ ho scritto un file di intestazione che è disponibile per tutti, tuttavia voglio limitare i file che lo includono. C'è un modo in cui posso generare un errore del compilatore se i miei file di intestazione sono inclusi in un file c/cxx "non autorizzato"?In C o C++ posso imporre restrizioni su quali file possono includere il mio file di intestazione
5
A
risposta
6
Ovviamente non esiste una funzione di sicurezza appropriata per questo (sarebbe semplicemente sciocco), ma ciò che si potrebbe fare è produrre un errore nel file di intestazione se non è presente una determinata macro quando si include il file, quindi che i header.h
inizia con
#ifndef AUTHORIZED_TO_INCLUDE_THE_HEADER
#error "You're not authorized to include this file"
#endif
poi nei file che includono questo, fanno
#define AUTHORIZED_TO_INCLUDE_THE_HEADER
#include "header.h"
Problemi correlati
- 1. Quali sono i punti dei file di intestazione in C?
- 2. Maiuscole/minuscole nei file di intestazione C++
- 3. Utilizzando #define per includere un altro file in C++/C
- 4. non possono includere file di intestazione std in Visual Studio 2008
- 5. Come creare file di intestazione C
- 6. Come posso ottenere e utilizzare il file di intestazione <graphics.h> nel mio programma C++?
- 7. Come includere più file sorgente in C#
- 8. Costi di inclusione di file di intestazione in Objective-C
- 9. convertire il file di intestazione C++ nel file protobuf .proto
- 10. Come posso analizzare un file di intestazione C con Perl?
- 11. Come usare gdb su file di intestazione C++?
- 12. perché devo includere un file di intestazione .h nel file .c con lo stesso nome?
- 13. Impossibile aprire il file include 'afxwin.h': nessun file di intestazione o directory 2013 C++
- 14. file di intestazione dell'interfaccia C++/cli
- 15. File di intestazione C e compilazione/collegamento
- 16. Emacs C++, aprendo corrispondente file di intestazione
- 17. Dove posso trovare il file application.exe.config nel mio progetto C#?
- 18. C/C++, puoi # includere un file in una stringa letterale?
- 19. Xcode - come includere libreria c e file di intestazione nel progetto cacao?
- 20. Dipendenze dei file di intestazione tra i moduli C++
- 21. incluso un file di intestazione due volte in C++
- 22. In C++, come posso rendere i typedef visibili a tutti i file nel mio progetto?
- 23. Riordina la funzione nel file c in base al file di intestazione c
- 24. C/C++: funzione statica nel file di intestazione, cosa significa?
- 25. Posso creare il mio certificato digitale in C# o Windows?
- 26. Come includere i file di intestazione in Visual Studio 2008?
- 27. Dichiarazione di vettori in un file di intestazione C++
- 28. Domanda di base sull'inclusione dei file di intestazione C++?
- 29. Visual Studio non può includere il file di intestazione.
- 30. Perché è valido includere un file di intestazione due volte in C++?
Forse, se questo è il caso si dovrebbe ripensare la struttura di codifica? Almeno per 'c', metto solo le funzioni di prototipo dell'interfaccia (le funzioni visibili che altri file/codice intendono chiamare) nel file di intestazione' .h'. Qualsiasi altra funzione interna che deve essere nascosta dall'esterno dichiaro (come 'static') e definisce tutto nel file' .c'. Ma ovviamente non conosco i dettagli della tua situazione o se ciò è rilevante. – yano
Su quale base lo restringerai? Voglio dire, qual è la ragione di un tale requisito? –
È correlato al test dell'unità. Ho bisogno di esporre una classe in un'intestazione in modo che possa essere derisa in un test, ma non voglio che nessun altro (a parte la mia implementazione) lo implementi/sottoclassi. – user194341