Zdravím, měl bych dotaz k hlavičkovým souborům v cpp.
1.
--------------------------------------------------------------------------------------------------------------
main.cpp-----------------------------------------
#include "someclass.h"
using namespace std;
int main()
{
Some_class Bobo;
Bobo.fuu();
}
someclass.h--------------------------------
class Some_class
{
public :
void fuu();
};
someclass.cpp----------------------------
#include "someclass.h"
void Some_class::fuu()
{
// ........
}
Otázka zní, za předpokladu, že preprocesor nahradí include directivy obsahem someclass.h jak v souboru main.cpp tak i v someclass.cpp, pak se provede kompilace a nakonec linker spojí dva výsledené objektové soubory v jednu aplikaci, je tam ve výsledku tedy obsah someclass.h dvakrát, nebo ne ? Proč ?
-------------------------------------------------------------------------------------------------------------
2.
main.cpp-----------------------------------------
#include "someclass.h"
using namespace std;
int main()
{
fuu();
}
someclass.h--------------------------------
void fuu();
someclass.cpp----------------------------
fuu()
{
// ........
}
Zde, za předpokladu, že v deklaračním souboru someclass.hpp nedeklaruji nový datový typ se kod zkompiluje i za předpokladu, že v someclass.cpp neinkluduji soubor s deklaracemi someclass.h, což v případě číslo jedna nebylo možné. Proč ?
Využívám Gnu gcc compiler.