No práve. Jazyk C/C++ podporuje prax že niečo vysuniem do *.h to potom includnem do *.c/*.cpp.
To "niečo" by měly být ideálně pouze deklarace a pokud chcete usnadnit překladači trošku času, pak forward deklarace.
A ked prekladač hlási chybu ohraničím to celé:
#idndef
#define
#endif
Tohle není chyba překladače nebo návrhového vzoru "include soubor v C". To je neukázněnost programátora. Dá se to vyřešit snadno - udělejte si pro svůj editor šablonky tak, aby se vám při vytváření nového hlavičkového souboru vždy otevřela potřebná šablona. Popis najdete například zde:
http://stackoverflow.com/questions/162617/how-can-i-automatically-add-some-skeleton-code-when-creating-a-new-file-with-vima do šablony si dejte například tohle:
/**
* @file
* @author Moje Jmeno <moje.adresa@moje.domena.cz>
*/
#ifndef __H_
#define __H_
/**
* @brief
*/
class {
};
#endif
Zvyšíte tak své šance, že zvítězíte nad svou neukázněností a váš kód bude vypadat trochu lépe a překladatelněji, o problémy se vám automaticky postará překladač, a přestanete mít pocit, že nemáte kód pod kontrolou. Přestaňte řešit záležitosti, které umí snadno řešit technika.
Použití této šablony samozřejmě znamená, že se překonáte a doplníte do ifndef a define nějaký smysluplný název makra. Je možné, že existuje i lepší řešení, které přesvědčí editor, aby sem doplnil něco vhodného sám.