This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Redeclaration of used symbols


> Jakub Jelinek <jakub@redhat.com> writes:
> 
> | On Sun, Sep 07, 2003 at 07:44:35PM +0200, Jan Hubicka wrote:
> | > extern inline int t()
> | > {
> | >   something...
> | > }
> | > int t()
> | > {
> | >   something else...
> | > }
> | 
> | This is needed, so that you can include the headers with extern inlines
> | when you provide definition which will be used when inlining fails.
> | Having to add magic defines around each extern inline which will then
> | be only used in the module providing the definition would be
> | non-maintainable.
> 
> Something I'm having hard time to understand is why there is need for
> two definitions.  If inlining fails then why can't we generate an
> out-of-line (weak) definition for that function?

The extern inline is used when we don't need out-of-line function.
I guess this feature is usefull for code that defines extern inline in
all modules and out-of-line version in just one module to avoid
duplication.
C++ has sanier ways to do that :)

Honza
> 
> -- Gaby


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]