2016-04-06 22 views
5

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

+1

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

+0

Na jakiej podstawie to ograniczysz? Mam na myśli, jaki jest powód takiego wymogu? –

+0

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

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