Clang-tidy: what is the proper set-up?

While I am using PIO for quite some years now, I never looked under the hood; meaning, I used it out of the box as is, and din’t pay with any configurations.

I have now seen that I can install clang-tidy to complain about style violations. Sounds great, but how to get there?!

I am running Linux Mint (Linux x570 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux) with up-to-date VScode and PIO.
When running

clang-tidy --version
Ubuntu LLVM version 14.0.0

I checked for the latest version, being 18, and installed it.
I now have:

clang-tidy-18 --version
Ubuntu LLVM version 18.1.8

I have placed a .clang-tidy into the project root folder:

Checks: 'readability-identifier-naming'
CheckOptions:
  - key: readability-identifier-naming.ConstantCase
    value: UPPER_CASE
  - key: readability-identifier-naming.ConstantPrefix
    value: ''
  - key: readability-identifier-naming.MemberConstantCase
    value: UPPER_CASE
  - key: readability-identifier-naming.MemberConstantPrefix
    value: ''
  - key: readability-identifier-naming.PointerCase
    value: UPPER_CASE  # Broaden to all pointers
  - key: readability-identifier-naming.PointerPrefix
    value: ''
HeaderFilterRegex: 'src/.*'

I also read that a .vscode/settings.json file is required:

{
    "C_Cpp.codeAnalysis.clangTidy.enabled": true,
    "C_Cpp.codeAnalysis.clangTidy.path": "/usr/bin/clang-tidy-18",
    "C_Cpp.codeAnalysis.clangTidy.checks.enabled": [
        "readability-identifier-naming"
    ],
    "C_Cpp.codeAnalysis.clangTidy.args": [
        "--checks=readability-identifier-naming",
        "-p=${workspaceFolder}/.pio/build/uno"
    ],
    "C_Cpp.codeAnalysis.clangTidy.readability-identifier-naming.ConstantCase": "UPPER_CASE",
    "C_Cpp.codeAnalysis.clangTidy.readability-identifier-naming.ConstantPrefix": "",
    "C_Cpp.codeAnalysis.clangTidy.readability-identifier-naming.MemberConstantCase": "UPPER_CASE",
    "C_Cpp.codeAnalysis.clangTidy.readability-identifier-naming.MemberConstantPrefix": "",
    "C_Cpp.codeAnalysis.clangTidy.readability-identifier-naming.PointerCase": "UPPER_CASE",
    "C_Cpp.codeAnalysis.clangTidy.readability-identifier-naming.PointerPrefix": "",
    "C_Cpp.codeAnalysis.clangTidy.loggingLevel": "Debug",
    "C_Cpp.codeAnalysis.runOnSave": true
}

I have added this line:

check_flags =
  clangtidy: --config-file=.clang-tidy

to platformio.ini, but noticed it works without as well.

It seems that all is working…

However, here my questions:

  1. did I perform the correct install?
  2. Are there any files or paramters missing elsewhere?
  3. Since I work with PIO, is the settings.jason file even required?
  4. I was expecting that View|Output would give me output from clang-tidy, but it doesn’t. What am I missing? Is it supposed to work like I expect?
  5. the commandline clang-tidy src/config.cpp --checks=readability-identifier-naming -p=.pio/build/uno --config-file=.clang-tidy --header-filter='src/.*' is showing (here an excerpt):
/home/maxg/Workspaces/PlatformIO/Projects/HubController/src/config.h:29:19: warning: invalid case style for constant 'ethernet_select' [readability-identifier-naming]
    const uint8_t ethernet_select;              // Ethernet chip select
                  ^~~~~~~~~~~~~~~
                  ETHERNET_SELECT
/home/maxg/Workspaces/PlatformIO/Projects/HubController/src/config.h:31:19: warning: invalid case style for constant 'num_sensors' [readability-identifier-naming]
    const uint8_t num_sensors;                  // Number of sensors}
                  ^~~~~~~~~~~
                  NUM_SENSORS
Suppressed 19 warnings (19 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
  1. What I also noted, clang-tidy does not pick up const char capitalisation errors (it does as shown above with const uint8_t). Why?
  2. Is there a way to specify which directories to include in the tidy check?

Any hints appreciated. Thanks.

Something fundamental to understand here is that, by only setting check_flags = clangtidy [..] in the platformio.ini, this is not automatically reflected in the IDE like in the “Problems” section of VSCode. PlatformIO does not provide that. This is only used when a pio check command is run through the PlatformIO core, or in extension, by the PlatformIO Home → Inspect graphical interface. You then see what it finds there.


To be able to see what clang-tidy would complain about in real time in your IDE, like VSCode, then yes, you would have to setup your IDE and possible some additional extension inside your IDE to also query clang-tidy in the exact same way PlatformIO would, so you would need the settings.json file to maybe configure that. But strictly speaking, PlatformIO does not require or generate it.

Even more tricky is the fact that, you seem to have installed clang-tidy system-wide, through maybe sudo apt install. However, PlatformIO does not use system-wide installed tools at all, it uses the binaries provided by the package registry and as stored in <home folder>/.platformio/packages (/tool-clangtidy), which is currently version 19.1.0. That is now different to 18.1.0 that you installed.

So, to get the same results through the VSCode clang-tidy extension as you would get when PlatformIO runs the clang-tidy tool, you would need to point the VSCode clang-tidy extension to use the exact same clang-tidy binary that PlatformIO would. Otherwise, they would sometimes disagree or not understand some config option.

1 Like

Thank you, very informative as always :slight_smile:
It is clearer now that there are two distinct environments…
I ran pio check (never done before), and it installed this:

pio check
Checking uno > cppcheck (platform: atmelavr; board: uno; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Tool Manager: Installing platformio/tool-cppcheck @ ~1.21100.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: tool-cppcheck@1.21100.230717 has been installed!

I then tried “Inspect”, but it gives me only an error window, not the nice graph in your second screenshot.


I am running PlatformIO Core, version 6.1.18 (maybe yours is different?!

Yes… didn’t know any better. I had v14 already there (maybe/must be part of Linux Mint), and updated it to v18.

Understood. (Though not too worried about it; at least ATM :slight_smile: )

Mh then something went wrong there, can you copy-paste the full output in a code block here? You might need to open up a PlatformIO Core CLI and manually execute pio check (with -v possibly to see the error better)

Sure… here it is the result of pio check -v:

# [2025-06-01 21:14] maxg@x570 ~/Workspaces/PlatformIO/Projects/HubController $ 
pio check -v
Checking uno > clangtidy (platform: atmelavr; board: uno; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/home/maxg/.platformio/packages/tool-clangtidy/clang-tidy --quiet --config-file=.clang-tidy /home/maxg/Workspaces/PlatformIO/Projects/HubController/src/config.cpp /home/maxg/Workspaces/PlatformIO/Projects/HubController/src/main.cpp /home/maxg/Workspaces/PlatformIO/Projects/HubController/src/config.h -- -DPLATFORMIO=60118 -DARDUINO_AVR_UNO -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO=10808 -D__AVR_ATmega328P__ -D__DBL_MIN_EXP__=(-125) -D__HQ_FBIT__=15 -D__cpp_attributes=200809 -D__UINT_LEAST16_MAX__=0xffffU -D__ATOMIC_ACQUIRE=2 -D__SFRACT_IBIT__=0 -D__FLT_MIN__=1.17549435e-38F -D__GCC_IEC_559_COMPLEX=0 -D__BUILTIN_AVR_SLEEP=1 -D__BUILTIN_AVR_COUNTLSULLK=1 -D__BUILTIN_AVR_COUNTLSULLR=1 -D__UFRACT_MAX__=0XFFFFP-16UR -D__UINT_LEAST8_TYPE__=unsigned char -D__DQ_FBIT__=63 -D__INTMAX_C(c)=c ## LL -D__ULFRACT_FBIT__=32 -D__SACCUM_EPSILON__=0x1P-7HK -D__CHAR_BIT__=8 -D__USQ_IBIT__=0 -D__UINT8_MAX__=0xff -D__ACCUM_FBIT__=15 -D__WINT_MAX__=0x7fff -D__FLT32_MIN_EXP__=(-125) -D__cpp_static_assert=200410 -D__USFRACT_FBIT__=8 -D__ORDER_LITTLE_ENDIAN__=1234 -D__SIZE_MAX__=0xffffU -D__WCHAR_MAX__=0x7fff -D__LACCUM_IBIT__=32 -D__DBL_DENORM_MIN__=double(1.40129846e-45L) -D__GCC_ATOMIC_CHAR_LOCK_FREE=1 -D__GCC_IEC_559=0 -D__FLT_EVAL_METHOD__=0 -D__BUILTIN_AVR_LLKBITS=1 -D__cpp_binary_literals=201304 -D__LLACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-47LLK -D__GCC_ATOMIC_CHAR32_T_LOCK_FREE=1 -D__BUILTIN_AVR_HKBITS=1 -D__BUILTIN_AVR_BITSLLK=1 -D__FRACT_FBIT__=15 -D__BUILTIN_AVR_BITSLLR=1 -D__cpp_variadic_templates=200704 -D__UINT_FAST64_MAX__=0xffffffffffffffffULL -D__SIG_ATOMIC_TYPE__=char -D__BUILTIN_AVR_UHKBITS=1 -D__UACCUM_FBIT__=16 -D__DBL_MIN_10_EXP__=(-37) -D__FINITE_MATH_ONLY__=0 -D__LFRACT_IBIT__=0 -D__GNUC_PATCHLEVEL__=0 -D__FLT32_HAS_DENORM__=1 -D__AVR_MEGA__=1 -D__LFRACT_MAX__=0X7FFFFFFFP-31LR -D__UINT_FAST8_MAX__=0xff -D__has_include(STR)=__has_include__(STR) -D__DEC64_MAX_EXP__=385 -D__INT8_C(c)=c -D__INT_LEAST8_WIDTH__=8 -D__UINT_LEAST64_MAX__=0xffffffffffffffffULL -D__SA_FBIT__=15 -D__SHRT_MAX__=0x7fff -D__LDBL_MAX__=3.40282347e+38L -D__FRACT_MAX__=0X7FFFP-15R -D__UFRACT_FBIT__=16 -D__UFRACT_MIN__=0.0UR -D__UINT_LEAST8_MAX__=0xff -D__GCC_ATOMIC_BOOL_LOCK_FREE=1 -D__UINTMAX_TYPE__=long long unsigned int -D__LLFRACT_EPSILON__=0x1P-63LLR -D__BUILTIN_AVR_DELAY_CYCLES=1 -D__DEC32_EPSILON__=1E-6DF -D__FLT_EVAL_METHOD_TS_18661_3__=0 -D__UINT32_MAX__=0xffffffffUL -D__GXX_EXPERIMENTAL_CXX0X__=1 -D__ULFRACT_MAX__=0XFFFFFFFFP-32ULR -D__TA_IBIT__=16 -D__LDBL_MAX_EXP__=128 -D__WINT_MIN__=(-__WINT_MAX__ - 1) -D__INT_LEAST16_WIDTH__=16 -D__ULLFRACT_MIN__=0.0ULLR -D__SCHAR_MAX__=0x7f -D__WCHAR_MIN__=(-__WCHAR_MAX__ - 1) -D__INT64_C(c)=c ## LL -D__DBL_DIG__=6 -D__GCC_ATOMIC_POINTER_LOCK_FREE=1 -D__AVR_HAVE_SPH__=1 -D__LLACCUM_MIN__=(-0X1P15LLK-0X1P15LLK) -D__BUILTIN_AVR_KBITS=1 -D__BUILTIN_AVR_ABSK=1 -D__BUILTIN_AVR_ABSR=1 -D__SIZEOF_INT__=2 -D__SIZEOF_POINTER__=2 -D__GCC_ATOMIC_CHAR16_T_LOCK_FREE=1 -D__USACCUM_IBIT__=8 -D__USER_LABEL_PREFIX__ -D__STDC_HOSTED__=1 -D__LDBL_HAS_INFINITY__=1 -D__LFRACT_MIN__=(-0.5LR-0.5LR) -D__HA_IBIT__=8 -D__FLT32_DIG__=6 -D__TQ_IBIT__=0 -D__FLT_EPSILON__=1.19209290e-7F -D__GXX_WEAK__=1 -D__SHRT_WIDTH__=16 -D__USFRACT_IBIT__=0 -D__LDBL_MIN__=1.17549435e-38L -D__FRACT_MIN__=(-0.5R-0.5R) -D__AVR_SFR_OFFSET__=0x20 -D__DEC32_MAX__=9.999999E96DF -D__DA_IBIT__=32 -D__INT32_MAX__=0x7fffffffL -D__UQQ_FBIT__=8 -D__INT_WIDTH__=16 -D__SIZEOF_LONG__=4 -D__UACCUM_MAX__=0XFFFFFFFFP-16UK -D__UINT16_C(c)=c ## U -D__PTRDIFF_WIDTH__=16 -D__DECIMAL_DIG__=9 -D__LFRACT_EPSILON__=0x1P-31LR -D__AVR_2_BYTE_PC__=1 -D__ULFRACT_MIN__=0.0ULR -D__INTMAX_WIDTH__=64 -D__has_include_next(STR)=__has_include_next__(STR) -D__BUILTIN_AVR_ULLRBITS=1 -D__LDBL_HAS_QUIET_NAN__=1 -D__ULACCUM_IBIT__=32 -D__UACCUM_EPSILON__=0x1P-16UK -D__BUILTIN_AVR_SEI=1 -D__GNUC__=7 -D__ULLACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-48ULLK -D__AVR_ATmega328P__=1 -D__cpp_delegating_constructors=200604 -D__HQ_IBIT__=0 -D__BUILTIN_AVR_SWAP=1 -D__FLT_HAS_DENORM__=1 -D__SIZEOF_LONG_DOUBLE__=4 -D__BIGGEST_ALIGNMENT__=1 -D__STDC_UTF_16__=1 -D__UINT24_MAX__=16777215UL -D__BUILTIN_AVR_NOP=1 -D__GNUC_STDC_INLINE__=1 -D__DQ_IBIT__=0 -D__FLT32_HAS_INFINITY__=1 -D__DBL_MAX__=double(3.40282347e+38L) -D__ULFRACT_IBIT__=0 -D__cpp_raw_strings=200710 -D__INT_FAST32_MAX__=0x7fffffffL -D__DBL_HAS_INFINITY__=1 -D__INT64_MAX__=0x7fffffffffffffffLL -D__ACCUM_IBIT__=16 -D__DEC32_MIN_EXP__=(-94) -D__BUILTIN_AVR_UKBITS=1 -D__INTPTR_WIDTH__=16 -D__BUILTIN_AVR_FMULSU=1 -D__LACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-31LK -D__INT_FAST16_TYPE__=int -D__LDBL_HAS_DENORM__=1 -D__BUILTIN_AVR_BITSK=1 -D__BUILTIN_AVR_BITSR=1 -D__cplusplus=201103L -D__cpp_ref_qualifiers=200710 -D__DEC128_MAX__=9.999999999999999999999999999999999E6144DL -D__INT_LEAST32_MAX__=0x7fffffffL -D__USING_SJLJ_EXCEPTIONS__=1 -D__DEC32_MIN__=1E-95DF -D__ACCUM_MAX__=0X7FFFFFFFP-15K -D__DEPRECATED=1 -D__cpp_rvalue_references=200610 -D__DBL_MAX_EXP__=128 -D__USACCUM_EPSILON__=0x1P-8UHK -D__WCHAR_WIDTH__=16 -D__FLT32_MAX__=3.40282347e+38F32 -D__DEC128_EPSILON__=1E-33DL -D__SFRACT_MAX__=0X7FP-7HR -D__FRACT_IBIT__=0 -D__PTRDIFF_MAX__=0x7fff -D__UACCUM_MIN__=0.0UK -D__AVR_ENHANCED__=1 -D__UACCUM_IBIT__=16 -D__BUILTIN_AVR_NOPS=1 -D__BUILTIN_AVR_WDR=1 -D__FLT32_HAS_QUIET_NAN__=1 -D__GNUG__=7 -D__LONG_LONG_MAX__=0x7fffffffffffffffLL -D__SIZEOF_SIZE_T__=2 -D__ULACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-32ULK -D__cpp_rvalue_reference=200610 -D__cpp_nsdmi=200809 -D__SIZEOF_WINT_T__=2 -D__LONG_LONG_WIDTH__=64 -D__cpp_initializer_lists=200806 -D__FLT32_MAX_EXP__=128 -D__SA_IBIT__=16 -D__ULLACCUM_MIN__=0.0ULLK -D__BUILTIN_AVR_ROUNDUHK=1 -D__BUILTIN_AVR_ROUNDUHR=1 -D__cpp_hex_float=201603 -D__GXX_ABI_VERSION=1011 -D__INT24_MAX__=8388607L -D__UTA_FBIT__=48 -D__FLT_MIN_EXP__=(-125) -D__USFRACT_MAX__=0XFFP-8UHR -D__UFRACT_IBIT__=0 -D__BUILTIN_AVR_ROUNDFX=1 -D__BUILTIN_AVR_ROUNDULK=1 -D__BUILTIN_AVR_ROUNDULR=1 -D__cpp_lambdas=200907 -D__BUILTIN_AVR_COUNTLSLLK=1 -D__BUILTIN_AVR_COUNTLSLLR=1 -D__BUILTIN_AVR_ROUNDHK=1 -D__INT_FAST64_TYPE__=long long int -D__BUILTIN_AVR_ROUNDHR=1 -D__DBL_MIN__=double(1.17549435e-38L) -D__BUILTIN_AVR_COUNTLSK=1 -D__BUILTIN_AVR_ROUNDLK=1 -D__BUILTIN_AVR_COUNTLSR=1 -D__BUILTIN_AVR_ROUNDLR=1 -D__LACCUM_MIN__=(-0X1P31LK-0X1P31LK) -D__ULLACCUM_FBIT__=48 -D__BUILTIN_AVR_LKBITS=1 -D__ULLFRACT_EPSILON__=0x1P-64ULLR -D__DEC128_MIN__=1E-6143DL -D__REGISTER_PREFIX__ -D__UINT16_MAX__=0xffffU -D__DBL_HAS_DENORM__=1 -D__BUILTIN_AVR_ULKBITS=1 -D__ACCUM_MIN__=(-0X1P15K-0X1P15K) -D__AVR_ARCH__=5 -D__SQ_IBIT__=0 -D__FLT32_MIN__=1.17549435e-38F32 -D__UINT8_TYPE__=unsigned char -D__BUILTIN_AVR_ROUNDUK=1 -D__BUILTIN_AVR_ROUNDUR=1 -D__UHA_FBIT__=8 -D__NO_INLINE__=1 -D__SFRACT_MIN__=(-0.5HR-0.5HR) -D__UTQ_FBIT__=128 -D__FLT_MANT_DIG__=24 -D__LDBL_DECIMAL_DIG__=9 -D__VERSION__="7.3.0" -D__UINT64_C(c)=c ## ULL -D__ULLFRACT_FBIT__=64 -D__cpp_unicode_characters=200704 -D__FRACT_EPSILON__=0x1P-15R -D__ULACCUM_MIN__=0.0ULK -D__UDA_FBIT__=32 -D__LLACCUM_EPSILON__=0x1P-47LLK -D__GCC_ATOMIC_INT_LOCK_FREE=1 -D__FLT32_MANT_DIG__=24 -D__BUILTIN_AVR_BITSUHK=1 -D__BUILTIN_AVR_BITSUHR=1 -D__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__ -D__USFRACT_MIN__=0.0UHR -D__BUILTIN_AVR_BITSULK=1 -D__ULLACCUM_IBIT__=16 -D__BUILTIN_AVR_BITSULR=1 -D__UQQ_IBIT__=0 -D__BUILTIN_AVR_LLRBITS=1 -D__SCHAR_WIDTH__=8 -D__BUILTIN_AVR_BITSULLK=1 -D__BUILTIN_AVR_BITSULLR=1 -D__INT32_C(c)=c ## L -D__DEC64_EPSILON__=1E-15DD -D__ORDER_PDP_ENDIAN__=3412 -D__DEC128_MIN_EXP__=(-6142) -D__UHQ_FBIT__=16 -D__LLACCUM_FBIT__=47 -D__FLT32_MAX_10_EXP__=38 -D__BUILTIN_AVR_ROUNDULLK=1 -D__BUILTIN_AVR_ROUNDULLR=1 -D__INT_FAST32_TYPE__=long int -D__BUILTIN_AVR_HRBITS=1 -D__UINT_LEAST16_TYPE__=unsigned int -D__BUILTIN_AVR_UHRBITS=1 -D__INT16_MAX__=0x7fff -D__SIZE_TYPE__=unsigned int -D__UINT64_MAX__=0xffffffffffffffffULL -D__UDQ_FBIT__=64 -D__INT8_TYPE__=signed char -D__ELF__=1 -D__ULFRACT_EPSILON__=0x1P-32ULR -D__LLFRACT_FBIT__=63 -D__FLT_RADIX__=2 -D__INT_LEAST16_TYPE__=int -D__BUILTIN_AVR_ABSFX=1 -D__LDBL_EPSILON__=1.19209290e-7L -D__UINTMAX_C(c)=c ## ULL -D__INT24_MIN__=(-__INT24_MAX__-1) -D__SACCUM_MAX__=0X7FFFP-7HK -D__BUILTIN_AVR_ABSHR=1 -D__SIG_ATOMIC_MAX__=0x7f -D__GCC_ATOMIC_WCHAR_T_LOCK_FREE=1 -D__SIZEOF_PTRDIFF_T__=2 -D__AVR=1 -D__BUILTIN_AVR_ABSLK=1 -D__BUILTIN_AVR_ABSLR=1 -D__LACCUM_EPSILON__=0x1P-31LK -D__DEC32_SUBNORMAL_MIN__=0.000001E-95DF -D__INT_FAST16_MAX__=0x7fff -D__UINT_FAST32_MAX__=0xffffffffUL -D__UINT_LEAST64_TYPE__=long long unsigned int -D__USACCUM_MAX__=0XFFFFP-8UHK -D__SFRACT_EPSILON__=0x1P-7HR -D__FLT_HAS_QUIET_NAN__=1 -D__FLT_MAX_10_EXP__=38 -D__LONG_MAX__=0x7fffffffL -D__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL -D__FLT_HAS_INFINITY__=1 -D__cpp_unicode_literals=200710 -D__USA_FBIT__=16 -D__UINT_FAST16_TYPE__=unsigned int -D__DEC64_MAX__=9.999999999999999E384DD -D__INT_FAST32_WIDTH__=32 -D__BUILTIN_AVR_RBITS=1 -D__CHAR16_TYPE__=unsigned int -D__PRAGMA_REDEFINE_EXTNAME=1 -D__AVR_HAVE_LPMX__=1 -D__SIZE_WIDTH__=16 -D__INT_LEAST16_MAX__=0x7fff -D__DEC64_MANT_DIG__=16 -D__UINT_LEAST32_MAX__=0xffffffffUL -D__SACCUM_FBIT__=7 -D__FLT32_DENORM_MIN__=1.40129846e-45F32 -D__GCC_ATOMIC_LONG_LOCK_FREE=1 -D__SIG_ATOMIC_WIDTH__=8 -D__INT_LEAST64_TYPE__=long long int -D__INT16_TYPE__=int -D__INT_LEAST8_TYPE__=signed char -D__SQ_FBIT__=31 -D__DEC32_MAX_EXP__=97 -D__INT_FAST8_MAX__=0x7f -D__INTPTR_MAX__=0x7fff -D__QQ_FBIT__=7 -D__cpp_range_based_for=200907 -D__UTA_IBIT__=16 -D__FLT32_MIN_10_EXP__=(-37) -D__LDBL_MANT_DIG__=24 -D__SFRACT_FBIT__=7 -D__SACCUM_MIN__=(-0X1P7HK-0X1P7HK) -D__DBL_HAS_QUIET_NAN__=1 -D__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1) -DAVR=1 -D__BUILTIN_AVR_FMULS=1 -D__INTPTR_TYPE__=int -D__UINT16_TYPE__=unsigned int -D__WCHAR_TYPE__=int -D__SIZEOF_FLOAT__=4 -D__AVR__=1 -D__BUILTIN_AVR_INSERT_BITS=1 -D__AVR_HAVE_JMP_CALL__=1 -D__USQ_FBIT__=32 -D__UINTPTR_MAX__=0xffffU -D__INT_FAST64_WIDTH__=64 -D__DEC64_MIN_EXP__=(-382) -D__cpp_decltype=200707 -D__FLT32_DECIMAL_DIG__=9 -D__INT_FAST64_MAX__=0x7fffffffffffffffLL -D__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 -D__FLT_DIG__=6 -D__UINT_FAST64_TYPE__=long long unsigned int -D__BUILTIN_AVR_BITSHK=1 -D__BUILTIN_AVR_BITSHR=1 -D__INT_MAX__=0x7fff -D__LACCUM_FBIT__=31 -D__USACCUM_MIN__=0.0UHK -D__UHA_IBIT__=8 -D__INT64_TYPE__=long long int -D__BUILTIN_AVR_BITSLK=1 -D__BUILTIN_AVR_BITSLR=1 -D__FLT_MAX_EXP__=128 -D__AVR_HAVE_MUL__=1 -D__UTQ_IBIT__=0 -D__DBL_MANT_DIG__=24 -D__cpp_inheriting_constructors=201511 -D__BUILTIN_AVR_ULLKBITS=1 -D__INT_LEAST64_MAX__=0x7fffffffffffffffLL -D__AVR_HAVE_MOVW__=1 -D__DEC64_MIN__=1E-383DD -D__WINT_TYPE__=int -D__UINT_LEAST32_TYPE__=long unsigned int -D__SIZEOF_SHORT__=2 -D__ULLFRACT_IBIT__=0 -D__LDBL_MIN_EXP__=(-125) -D__UDA_IBIT__=32 -D__WINT_WIDTH__=16 -D__INT_LEAST8_MAX__=0x7f -D__LFRACT_FBIT__=31 -D__LDBL_MAX_10_EXP__=38 -D__ATOMIC_RELAXED=0 -D__DBL_EPSILON__=double(1.19209290e-7L) -D__BUILTIN_AVR_BITSUK=1 -D__BUILTIN_AVR_BITSUR=1 -D__UINT8_C(c)=c -D__INT_LEAST32_TYPE__=long int -D__BUILTIN_AVR_URBITS=1 -D__SIZEOF_WCHAR_T__=2 -D__LLFRACT_MAX__=0X7FFFFFFFFFFFFFFFP-63LLR -D__TQ_FBIT__=127 -D__INT_FAST8_TYPE__=signed char -D__ULLACCUM_EPSILON__=0x1P-48ULLK -D__BUILTIN_AVR_ROUNDK=1 -D__BUILTIN_AVR_ROUNDR=1 -D__UHQ_IBIT__=0 -D__LLACCUM_IBIT__=16 -D__FLT32_EPSILON__=1.19209290e-7F32 -D__AVR_DEVICE_NAME__=atmega328p -D__DBL_DECIMAL_DIG__=9 -D__STDC_UTF_32__=1 -D__INT_FAST8_WIDTH__=8 -D__DEC_EVAL_METHOD__=2 -D__TA_FBIT__=47 -D__UDQ_IBIT__=0 -D__ORDER_BIG_ENDIAN__=4321 -D__cpp_runtime_arrays=198712 -D__WITH_AVRLIBC__=1 -D__UINT64_TYPE__=long long unsigned int -D__ACCUM_EPSILON__=0x1P-15K -D__UINT32_C(c)=c ## UL -D__BUILTIN_AVR_COUNTLSUHK=1 -D__INTMAX_MAX__=0x7fffffffffffffffLL -D__cpp_alias_templates=200704 -D__BUILTIN_AVR_COUNTLSUHR=1 -D__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__ -D__FLT_DENORM_MIN__=1.40129846e-45F -D__LLFRACT_IBIT__=0 -D__INT8_MAX__=0x7f -D__LONG_WIDTH__=32 -D__UINT_FAST32_TYPE__=long unsigned int -D__CHAR32_TYPE__=long unsigned int -D__BUILTIN_AVR_COUNTLSULK=1 -D__BUILTIN_AVR_COUNTLSULR=1 -D__FLT_MAX__=3.40282347e+38F -D__cpp_constexpr=200704 -D__USACCUM_FBIT__=8 -D__BUILTIN_AVR_COUNTLSFX=1 -D__INT32_TYPE__=long int -D__SIZEOF_DOUBLE__=4 -D__FLT_MIN_10_EXP__=(-37) -D__UFRACT_EPSILON__=0x1P-16UR -D__INT_LEAST32_WIDTH__=32 -D__BUILTIN_AVR_COUNTLSHK=1 -D__BUILTIN_AVR_COUNTLSHR=1 -D__INTMAX_TYPE__=long long int -D__BUILTIN_AVR_ABSLLK=1 -D__BUILTIN_AVR_ABSLLR=1 -D__DEC128_MAX_EXP__=6145 -D__AVR_HAVE_16BIT_SP__=1 -D__ATOMIC_CONSUME=1 -D__GNUC_MINOR__=3 -D__INT_FAST16_WIDTH__=16 -D__UINTMAX_MAX__=0xffffffffffffffffULL -D__DEC32_MANT_DIG__=7 -D__HA_FBIT__=7 -D__BUILTIN_AVR_COUNTLSLK=1 -D__BUILTIN_AVR_COUNTLSLR=1 -D__BUILTIN_AVR_CLI=1 -D__DBL_MAX_10_EXP__=38 -D__LDBL_DENORM_MIN__=1.40129846e-45L -D__INT16_C(c)=c -D__STDC__=1 -D__PTRDIFF_TYPE__=int -D__LLFRACT_MIN__=(-0.5LLR-0.5LLR) -D__BUILTIN_AVR_LRBITS=1 -D__ATOMIC_SEQ_CST=5 -D__DA_FBIT__=31 -D__UINT32_TYPE__=long unsigned int -D__BUILTIN_AVR_ROUNDLLK=1 -D__UINTPTR_TYPE__=unsigned int -D__BUILTIN_AVR_ROUNDLLR=1 -D__USA_IBIT__=16 -D__BUILTIN_AVR_ULRBITS=1 -D__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD -D__DEC128_MANT_DIG__=34 -D__LDBL_MIN_10_EXP__=(-37) -D__BUILTIN_AVR_COUNTLSUK=1 -D__BUILTIN_AVR_COUNTLSUR=1 -D__SIZEOF_LONG_LONG__=8 -D__ULACCUM_EPSILON__=0x1P-32ULK -D__cpp_user_defined_literals=200809 -D__SACCUM_IBIT__=8 -D__GCC_ATOMIC_LLONG_LOCK_FREE=1 -D__LDBL_DIG__=6 -D__FLT_DECIMAL_DIG__=9 -D__UINT_FAST16_MAX__=0xffffU -D__GCC_ATOMIC_SHORT_LOCK_FREE=1 -D__BUILTIN_AVR_ABSHK=1 -D__BUILTIN_AVR_FLASH_SEGMENT=1 -D__INT_LEAST64_WIDTH__=64 -D__ULLFRACT_MAX__=0XFFFFFFFFFFFFFFFFP-64ULLR -D__UINT_FAST8_TYPE__=unsigned char -D__USFRACT_EPSILON__=0x1P-8UHR -D__ULACCUM_FBIT__=32 -D__QQ_IBIT__=0 -D__ATOMIC_ACQ_REL=4 -D__ATOMIC_RELEASE=3 -D__BUILTIN_AVR_FMUL=1 -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/include -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/lib/WaterValve -I/home/maxg/Workspaces/PlatformIO/Projects/Arduino_Shared/ChipTemp -I/home/maxg/Workspaces/PlatformIO/Projects/Arduino_Shared/DS18B20Reader -I/home/maxg/Workspaces/PlatformIO/Projects/Arduino_Shared/OnOffToggle -I/home/maxg/Workspaces/PlatformIO/Projects/Arduino_Shared/MQTTUtils -I/home/maxg/Workspaces/PlatformIO/Projects/Arduino_Shared/DebugUtils -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/.pio/libdeps/uno/OneWire -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/.pio/libdeps/uno/PubSubClient/src -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/.pio/libdeps/uno/Ethernet/src -I/home/maxg/.platformio/packages/framework-arduino-avr/libraries/SPI/src -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/src -I/home/maxg/.platformio/packages/framework-arduino-avr/cores/arduino -I/home/maxg/.platformio/packages/framework-arduino-avr/variants/standard -I/home/maxg/Workspaces/PlatformIO/Projects/HubController/lib/Led -I/home/maxg/.platformio/packages/framework-arduino-avr/libraries/EEPROM/src -I/home/maxg/.platformio/packages/framework-arduino-avr/libraries/HID/src -I/home/maxg/.platformio/packages/framework-arduino-avr/libraries/SoftwareSerial/src -I/home/maxg/.platformio/packages/framework-arduino-avr/libraries/Wire/src -I/home/maxg/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/7.3.0/include -I/home/maxg/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/7.3.0/include-fixed -I/home/maxg/.platformio/packages/toolchain-atmelavr/avr/include
warning: redefining builtin macro [clang-diagnostic-builtin-macro-redefined]

error: too many errors emitted, stopping now [clang-diagnostic-error]

warning: '__BIGGEST_ALIGNMENT__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__CHAR16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__CHAR32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_DECIMAL_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_DENORM_MIN__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_EPSILON__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MANT_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MAX_10_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MAX_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MIN_10_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MIN_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DBL_MIN__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__DECIMAL_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_BOOL_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_CHAR16_T_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_CHAR32_T_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_CHAR_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_INT_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_LLONG_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_LONG_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_POINTER_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_SHORT_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GCC_ATOMIC_WCHAR_T_LOCK_FREE' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GNUC_MINOR__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GNUC_PATCHLEVEL__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GNUC__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GNUG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__GXX_ABI_VERSION' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT16_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT32_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT64_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT64_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT8_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INTMAX_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INTMAX_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INTPTR_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INTPTR_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INTPTR_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST16_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST32_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST64_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST64_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_FAST8_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST16_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST32_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST64_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST64_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_LEAST8_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__INT_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_DECIMAL_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_DENORM_MIN__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_EPSILON__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MANT_DIG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MAX_10_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MAX_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MIN_10_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MIN_EXP__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LDBL_MIN__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LONG_LONG_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LONG_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__LONG_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__PTRDIFF_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__PTRDIFF_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__PTRDIFF_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__REGISTER_PREFIX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SCHAR_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SHRT_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIG_ATOMIC_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIG_ATOMIC_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_DOUBLE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_INT__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_LONG_DOUBLE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_LONG__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_POINTER__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_PTRDIFF_T__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_SIZE_T__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_WCHAR_T__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZEOF_WINT_T__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZE_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZE_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__SIZE_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT16_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT32_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT64_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT64_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT8_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINTMAX_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINTMAX_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINTPTR_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINTPTR_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST16_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST32_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST64_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST64_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_FAST8_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST16_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST16_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST32_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST32_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST64_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST64_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__UINT_LEAST8_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__USER_LABEL_PREFIX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__VERSION__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__WCHAR_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__WCHAR_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__WINT_MAX__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__WINT_TYPE__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__WINT_WIDTH__' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cplusplus' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_alias_templates' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_attributes' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_binary_literals' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_constexpr' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_decltype' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_delegating_constructors' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_inheriting_constructors' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_initializer_lists' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_lambdas' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_nsdmi' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_raw_strings' macro redefined [clang-diagnostic-macro-redefined]

note: previous definition is here

warning: '__cpp_ref_qualifiers' macro redefined [clang-diagnostic-macro-redefined]


I couldn’t paste the lot (62kB) as it exceed the 32kB limit.

On that note: is there a way to exclude specific directories (like libdeps) from the check?

Can you add

check_skip_packages = yes

in the platformio.ini and retry the same command. It looks like its double-defining all compiler-specific macros for the AVR target. Use pastebin.com if the output gets too large.

Good idea… pio check -v - Pastebin.com
I added check_skip_packages = yes, but it still did libdeps/…

Moved the ‘inspect’ problem to a new thread: Inspect producing weird errors and does not show graph