Would it help if code was modified to completely remove the use of 
static in local variables and enforce that going forward and limit
use of static to functions and global variables?

Mike

> -----Original Message-----
> From: Oliver Smith-Denny <o...@linux.microsoft.com>
> Sent: Monday, October 21, 2024 1:26 PM
> To: devel@edk2.groups.io; pedro.falc...@gmail.com
> Cc: rebe...@bsdio.com; Kinney, Michael D <michael.d.kin...@intel.com>
> Subject: Re: [edk2-devel] [edk2-CCodingStandardsSpecification PATCH 1/1]
> Prefer use of `static` C keyword over EDK2 type `STATIC`
> 
> On 10/21/2024 1:21 PM, Pedro Falcato wrote:
> > On Mon, Oct 21, 2024 at 9:05 PM Oliver Smith-Denny
> > <o...@linux.microsoft.com> wrote:
> >>
> >> On 10/21/2024 12:42 PM, Pedro Falcato wrote:
> >>> On Mon, Oct 21, 2024 at 3:49 PM Rebecca Cran via groups.io
> >>> <rebecca=bsdio....@groups.io> wrote:
> >>>>
> >>>> Thanks, I'll fix it.
> >>>>
> >>>> Could you confirm whether the change from STATIC to static is
> something
> >>>> we want to go ahead with, or do we want to keep STATIC to allow
> >>>> GoogleTest to work?
> >>>
> >>> You don't need STATIC, doing stuff like -Dstatic= (or just #define
> >>> static in C code) Just Works. For GCC at least.
> >>>
> >>> proof of horribleness: https://godbolt.org/z/EvMd6hev8
> >>>
> >>
> >> The issue here is that C uses one keyword for two distinct things:
> >> file private members and local variables that keep state across
> calls,
> >> i.e. real static variables.
> >
> > That's an interesting problem, but I'm afraid the current EDK2 coding
> > style would recommend STATIC for local variables too.
> >
> > https://tianocore-docs.github.io/edk2-
> CCodingStandardsSpecification/release-
> 2.20/5_source_files/56_declarations_and_types.html#56-declarations-and-
> types
> > says:
> >
> > 5.6.1.2 The use of int, unsigned, char, void, static, long is a
> > violation of the coding convention.
> >
> > so:
> >
> > INT Foo()
> > {
> >      STATIC INT Variable = 0;
> >      return Variable++;
> > }
> >
> > would be the sanctioned way to pull off this kind of stuff. So STATIC
> > gains us nothing (neither does INT, LONG, CHAR, VOID, or CONST).
> >
> 
> Yeah, so what we did in Mu was leverage the fact that static locals are
> relatively uncommon and code coverage is extremely low, so that there
> was only one current instance of a static local under test. And we
> changed that to lowercase static. So now STATIC bought us that we
> could undef it when building HOST_APPLICATIONs.
> 
> Was I happy with that approach? No. But, we were trying to evaluate
> the usefulness of GoogleTest and this was one issue that had to be
> fixed in order for us to use it.
> 
> Oliver


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#120641): https://edk2.groups.io/g/devel/message/120641
Mute This Topic: https://groups.io/mt/108941574/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to