W C/C++ napisałem plik nagłówkowy, który jest dostępny dla wszystkich, jednak chcę ograniczyć pliki, które go zawierają. Czy istnieje sposób wygenerowania błędu kompilatora, jeśli moje pliki nagłówkowe są dołączone przez "nieautoryzowany" plik c/cxx?W C lub C++ mogę nałożyć ograniczenia, które pliki mogą zawierać mój plik nagłówkowy
5
A
Odpowiedz
6
Oczywiście nie ma odpowiedniej funkcji bezpieczeństwa (byłoby to głupie), ale można zrobić błąd w pliku nagłówkowym, jeśli pewne makro nie występuje podczas dołączania pliku, więc header.h
, że zaczyna się od
#ifndef AUTHORIZED_TO_INCLUDE_THE_HEADER
#error "You're not authorized to include this file"
#endif
następnie w plikach, które zawierają tego zrobić
#define AUTHORIZED_TO_INCLUDE_THE_HEADER
#include "header.h"
Powiązane problemy
- 1. Który plik nagłówkowy C/C++ definiuje typ danych BYTE?
- 2. Eclipse C++, w tym plik nagłówkowy z mojego folderu źródłowego
- 3. Jak mogę odgadnąć wszystkie możliwe wyjątki, które mogą być zgłaszane w C++?
- 4. Jakie są różne pliki, które mogą zawierać deklaracje PATH dla terminala OS X?
- 5. Jak określić plik nagłówkowy c w pliku android.mk
- 6. Czy makra preprocesora C mogą zawierać dyrektywy preprocesora?
- 7. Jak utworzyć plik nagłówkowy C przy użyciu narzędzia Javah
- 8. C# kontrola użytkownika, które mogą zawierać inne elementy sterujące (podczas używania go)
- 9. Jak wygenerować plik nagłówkowy JNI w Eclipse
- 10. Które elementy HTML nie mogą zawierać węzłów potomnych?
- 11. W tym plik nagłówkowy z innego katalogu
- 12. Czy istnieje dobry powód, aby plik nagłówkowy C++ nie zawierał innych plików nagłówkowych?
- 13. Array, które mogą być accesed używając array [ 'name'] w C#
- 14. Skąd wiadomo, które pliki cookie muszą zawierać poprawne HttpWebRequest?
- 15. Interfejsy nie mogą zawierać pola
- 16. C# interfejs nie może zawierać operatorów
- 17. Czy nagłówek biblioteki standardowej C++ może zawierać standardowy nagłówek C?
- 18. Które pliki projektu C# powinny mieć kontrolę wersji?
- 19. C# Śledź skopiowane pliki
- 20. Obserwuj plik lub folder w celu C
- 21. Jak mogę pobrać plik zip w C#?
- 22. Elementy mogą zawierać bloki w bem
- 23. Jak ustalić, które składniki redystrybucyjne C++ mój program musi uruchomić?
- 24. Czy adresy e-mail mogą zawierać znaki niealfanumeryczne?
- 25. Pliki w katalogu w C++
- 26. Jak dołączyć plik nagłówkowy przez makefile
- 27. C czyta pliki binarne
- 28. C# - StreamWriter tworzy mój plik, ale nie ma zawartości
- 29. Jak zainstalować plik nagłówkowy curses.h (lub pakiet zawierający go) w systemie Linux?
- 30. Jak mogę usunąć plik wskazywany przez PLIK * w C?
Może gdyby to sprawa powinna przemyśleć swoją strukturę kodowania? Przynajmniej dla 'c', umieszczam tylko funkcje prototypu interfejsu (widoczne funkcje, które inne pliki/kod zamierzają wywoływać) w pliku nagłówkowym' .h'. Wszelkie inne wewnętrzne funkcje, które mają być ukryte z zewnątrz, deklaruję (jako 'static') i definiuję wszystkie w pliku' .c'. Ale oczywiście nie znam szczegółów twojej sytuacji, a nawet nie jest to istotne. – yano
Na jakiej podstawie to ograniczysz? Mam na myśli, jaki jest powód takiego wymogu? –
Jest to związane z testowaniem urządzenia. Muszę wystawić klasę w nagłówku, aby można ją było wyśmiać w teście, ale nie chcę, aby ktokolwiek (oprócz mojej implementacji) implementował/podklasy tej klasy. – user194341