Skip to content

Commit

Permalink
Prefer use of static C keyword over EDK2 type STATIC
Browse files Browse the repository at this point in the history
A while ago a decision was made on the edk2-devel mailing list that
the `STATIC` EDK2 type should be replaced with the C keyword `static`.
Following further discussion, it was decided to disallow static local
variables to prevent breakage when using GoogleTest.

Update the Coding Specification to match. While here, remove the
outdated section disallowing static functions since they're no longer
a problem.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Rebecca Cran <[email protected]>
Reviewed-by: Michael D Kinney <[email protected]>
  • Loading branch information
bexcran committed Feb 4, 2025
1 parent bbec647 commit 422e975
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 9 deletions.
9 changes: 2 additions & 7 deletions 5_source_files/54_code_file_structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,17 +269,12 @@ other than at the top level of a file as specified by this document.

#### 5.4.2.2 Static

An object declared `STATIC` has either file or block scope.
An object declared `static` has file scope.
Objects may not be declared 'static' within functions.

##### 5.4.2.2.1 Do not reuse an object or function identifier with static storage duration.

Throughout the set of source files defined within a single .inf file, do not
reuse an identifier with static storage duration. The compiler may not be
confused by this, but the user may confuse unrelated variables with the same
name.

##### 5.4.2.2.2 Functions should not be declared STATIC.

Some source-level debuggers are unable to resolve static functions. Until it
can be verified that no one is dependent upon a debugger with this limitation,
it is strongly recommended that functions not be declared static.
2 changes: 1 addition & 1 deletion 5_source_files/56_declarations_and_types.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
Any abstract type that is defined must be constructed from other abstract types
or from common EFI data types.

#### 5.6.1.2 The use of int, unsigned, char, void, static, long is a violation of the coding convention.
#### 5.6.1.2 The use of int, unsigned, char, void, long is a violation of the coding convention.

The corresponding EFI types must be used instead.

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,5 @@ Copyright (c) 2006-2017, Intel Corporation. All rights reserved.
| | [#425](https://bugzilla.tianocore.org/show_bug.cgi?id=425) [CCS] clarify line breaking and indentation requirements for multi-line function calls | |
| | [#1656](https://bugzilla.tianocore.org/show_bug.cgi?id=1656) Update all Wiki pages for the BSD+Patent license change with SPDX identifiers | |
| | [#607](https://bugzilla.tianocore.org/show_bug.cgi?id=607) Document code comment requirements for spurious variable assignments | |
| 2.3 | Add 4.2 Directory names section and update File names section for the guidelines of module directory and file naming|September 2022||
| 2.3 | Add 4.2 Directory names section and update File names section for the guidelines of module directory and file naming |September 2022|
| 2.4 | The use of the 'static' C keyword is now preferred over the EDK2 type 'STATIC' |February 2025|

0 comments on commit 422e975

Please sign in to comment.