This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Problem with class operators.
- From: Eljay Love-Jensen <eljay at adobe dot com>
- To: Kristian Kratzenstein <kristian dot kratzenstein at kielnet dot net>, gcc-help at gcc dot gnu dot org
- Date: Mon, 25 Jul 2005 14:32:13 -0500
- Subject: Re: Problem with class operators.
Hi Kristian,
> What is now my conclusion : put small methods into the class decleration.
> But this looks dirty (sorry, but I try to hold my code clean).
Yes, put the non-specialized template method definitions in the header file.
That is where they belong.
You are not keeping your code clean by moving the non-specialized template
methods to a .cpp file.
Although if you REALLY want to do something like that to keep those things
separated, I highly recommend putting your non-specialized template methods,
along with your (explicitly) inline functions, into a file with the
extension .inl and then include that file at the end of your .h file.
For example:
----- foo.h -----
#ifndef foo_h_once
#define foo_h_once
// blah blah blah
#include "foo.inl"
#endif
-----------------
> Is no other way, to stop gcc to inline small methods ?
q.v. these switches
-Winline Warn when an inlined function cannot be inlined
-finline Pay attention to the "inline" keyword
-finline-functions Integrate simple functions into their callers
-finline-limit- This switch lacks documentation
-finline-limit=<number> Limit the size of inlined functions to <number>
-fkeep-inline-functions Generate code for functions even if they are
fully inlined
-fobey-inline Obey 'inline' keyword and always inline,
max-inline-insns-single The maximum number of instructions in a single
max-inline-insns-auto The maximum number of instructions when
max-inline-insns-recursive The maximum number of instructions inline
max-inline-insns-recursive-auto The maximum number of instructions
non-inline
max-inline-recursive-depth The maximum depth of recursive inlining for
inline functions
max-inline-recursive-depth-auto The maximum depth of recursive inlining for
non-inline functions
inline-unit-growth how much can given compilation unit grow because
inline-call-cost expense of call operation relative to ordinary
-fdefault-inline Inline member functions by default
-fimplement-inlines Export functions even if they can be inlined
-fimplicit-inline-templates Emit implicit instantiations of inline templates
-fvisibility-inlines-hidden Marks all inlined methods as having hidden
-fdefault-inline, -fdollars-in-identifiers, -felide-constructors,
-fhandle-exceptions, -fhonor-std, -fhuge-objects, -fimplement-inlines,
-fimplicit-inline-templates, -fimplicit-templates, -finput-charset=,
-fvisibility-inlines-hidden, -fvtable-gc, -fvtable-thunks, -fweak,
I produced this list via:
gcc -v --help >gcc.help 2>&1
grep inline gcc.help
HTH,
--Eljay