This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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