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"
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