C/C++ İçerisinde bulunan bir başlık dosyası yazdım, ancak içerdiği dosyaları kısıtlamak istiyorum. Benim başlık dosyaları bir "yetkisiz" c/cxx dosyası tarafından eklenirse derleyici hatası oluşturabilirim herhangi bir yolu var mı?C veya C++ içinde hangi dosyaların üstbilgisi dosyamı içerebileceğine dair kısıtlamalar uygulayabilirim.
5
A
cevap
6
Elbette bunun için uygun bir güvenlik özelliği yoktur (bu düz saçma bir aptalca olacaktır), ancak yapabileceğiniz şey, dosya dahil edildiğinde belirli bir makro yoksa, başlık dosyanızda bir hata oluşturmaktır. Bu şunlardır dosyalarda sonra
#ifndef AUTHORIZED_TO_INCLUDE_THE_HEADER
#error "You're not authorized to include this file"
#endif
ile header.h
başlar,
#define AUTHORIZED_TO_INCLUDE_THE_HEADER
#include "header.h"
yapmak o size kodlama yapısını tekrar düşünmek gerekir durum belki olur? En azından 'c' için, sadece .h' başlık dosyasında arayüz prototip fonksiyonlarını (diğer dosyaların/kodların aramayı amaçladığı görünür işlevleri) koyarım. Dışarıdan gizlenmiş başka herhangi bir dahili işlev, (statik olarak) bildirir ve '.c' dosyasındaki tümünü tanımlar. Ama tabii ki durumunuzun ayrıntılarını bilmiyorum ya da bu uygunsa. – yano
Hangi temelde onu kısıtlayacaksınız? Yani böyle bir şartın sebebi nedir? –
Birim testi ile ilgilidir. Bir sınıfa bir sınıfa maruz kalmamalı ki bir testte alay edilebilsin, fakat başka birinin (benim uygulamam dışında) onu uygulamak/alt sınıfa ayırmasını istemiyorum. – user194341