Muhtemelen asla asla söylemem ama, ayrıştırıldıklarında veri ve kod üreten ifadeler bir .h dosyasında olmamalıdır.
Makrolar, satır içi işlevler ve şablonlar veri veya koda benzeyebilir, ancak ayrıştırıldıkları gibi kod üretmezler, bunun yerine kullanılırlarsa. Bu öğelerin genellikle birden fazla .c veya .cpp içinde kullanılması gerekir, bu yüzden .h'ye aittirler.
Benim görüşüme göre, bir başlık dosyası karşılık gelen bir .c veya .cpp için minimum pratik arayüze sahip olmalıdır. Arayüz, #defines, class, typedef, struct tanımları, fonksiyon prototipleri ve global değişkenler için daha az tercih edilen harici tanımları içerebilir. Bununla birlikte, bir bildirim yalnızca bir kaynak dosyada kullanılıyorsa, muhtemelen .h'den dışlanmalı ve bunun yerine kaynak dosyada bulunmalıdır.
Bazıları aynı fikirde olmayabilir, ancak .h dosyaları için kişisel ölçütlerim, derlemeleri için gereken tüm diğer .h dosyalarını içermeleridir. Bazı durumlarda, bu çok fazla dosya olabilir, bu yüzden büyük bir içerme dosyası ağacı olabilecekleri dahil etmeden, işaretçileri bir sınıftaki nesnelere göstericileri kullanmamızı sağlayan sınıflara ileri bildirimler gibi dış bağımlılıkları azaltmak için bazı etkili yöntemlere sahibiz.