Browse Source

Merge #8794: Enable -Wshadow by default

359bac7 Add notes about variable names and shadowing (Pavel Janík)
fd5654c Check and enable -Wshadow by default. (Pavel Janík)
0.14
Wladimir J. van der Laan 8 years ago
parent
commit
e0477f6d20
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 1
      configure.ac
  2. 26
      doc/developer-notes.md

1
configure.ac

@ -203,6 +203,7 @@ if test "x$CXXFLAGS_overridden" = "xno"; then @@ -203,6 +203,7 @@ if test "x$CXXFLAGS_overridden" = "xno"; then
AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wshadow],[CXXFLAGS="$CXXFLAGS -Wshadow"],,[[$CXXFLAG_WERROR]])
## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
## unknown options if any other warning is produced. Test the -Wfoo case, and

26
doc/developer-notes.md

@ -331,6 +331,32 @@ Strings and formatting @@ -331,6 +331,32 @@ Strings and formatting
- *Rationale*: Bitcoin Core uses tinyformat, which is type safe. Leave them out to avoid confusion
Variable names
--------------
The shadowing warning (`-Wshadow`) is enabled by default. It prevents issues rising
from using a different variable with the same name.
Please name variables so that their names do not shadow variables defined in the source code.
E.g. in member initializers, prepend `_` to the argument name shadowing the
member name:
```c++
class AddressBookPage
{
Mode mode;
}
AddressBookPage::AddressBookPage(Mode _mode) :
mode(_mode)
...
```
When using nested cycles, do not name the inner cycle variable the same as in
upper cycle etc.
Threads and synchronization
----------------------------

Loading…
Cancel
Save