Re: [LAD] G++ trouble

From: Fons Adriaensen <fons@email-addr-hidden>
Date: Mon Nov 16 2020 - 14:35:30 EET

On Mon, Nov 16, 2020 at 12:22:54PM +0000, Will J Godfrey wrote:

> In GCC 8.3 doing that in a globally included header actually *creates* a
> multiple definitions error!
>
> #ifndef GLOBALS_H
> #define GLOBALS_H
>
> const unsigned int ADD_COLOUR = 0xdfafbf00; fine

Putting a definition in a header file is usually a bad idea.
What you get from this (without 'extern' is a separate copy
in each file that includes the header. GCC 8 will not flag
this as an error.
 
> extern const unsigned int ADD_COLOUR = 0xdfafbf00; boom!

This normally should not create ADD_COLOUR, just tell the
compiler that it exists somewhere. So this should result
in an 'undefined' error.

If OTOH you get a 'multiple definition' error that would
normally mean there are other definitions as well. Maybe
you had this in a number of files, decided later to make
it a single global, and forgot to delete the originals ?

Ciao,

-- 
FA
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
https://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Tue Nov 17 04:15:02 2020

This archive was generated by hypermail 2.1.8 : Tue Nov 17 2020 - 04:15:02 EET