Header filer indeholder normalt: enum og class og struct og andre typer. Prototyper på funktioner (mest i C). extern eklæring af variable. templates inline member funktioner. #define's
c og cpp filer indeholder: Kode Variable De elementer fra listen over indhold af header filer der kun har relevans for en enkelt c eller cpp fil.
Funktioner, der kun get/set'er kan desuden med fordel inlines, dvs. give compileren et tip om, at funktionskaldet kan undværes og indsætte funktionskoden i stedet (men uanset hvad bestemmer stadig compileren selv i sidste ende, om funktionen skal inlines eller ej - derfor er dette kun et tip fra programmøren). Inlined funktioner placeres i h/hpp filen.
Enten:
class Test { inline int getEtEllerAndet() { return temp; } };
Eller:
class Test { int getEtEllerAndet(); };
inline int Test::getEtEllerAndet() { return temp; }
Du bør ikke bruge _ eller __ på dine include guards:
_ = "Each name that ... begins with an underscore followed by an uppercase letter is reserved to the implementation for any use. ... Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace." (17.4.3.1.2/1) Don't use such identifiers.
__ = "Each name that contains a double underscore (_ _) ... is reserved to the implementation for any use." (17.4.3.1.2/1) Don't use such identifiers.
Har ikke lukket denne tråd endnu fordi jeg stadig har et par problemer. Hvis jeg f.eks. har en main-fil, en test.cpp/test.h og en test1.cpp/test1.h og ønsker at oprette et test1 objekt med et test objekt "associering", så får jeg følgende fejl:
error LNK2005: "public: __thiscall Node::Node(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Node@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) already defined in test.obj
Jeg benytter:
#ifndef #define
Min kode
#endif
i begge h-filer, men det virker som om at det er her fejlen alligevel ligger da fejl meddelelsen "der er flere af samme fejl" refererer til at flere ting allerede er defineret.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.