microsoft / microsoft/vscode-cpptools

IntelliSense doesn't seem to be able to handle some compiler extensions

Open
#9,968 8 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature Request Feature: Configuration Language Service
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

IntelliSense detects errors on built-in compiler extensions like __int24 and __uint24 from avr-gcc that aren't really errors. There seems to be no built-in way to tell it these are ok.

Steps to reproduce

  1. Create a file, test.c:
    int main() { *(volatile __uint24 *)0xC8 = 0x123456; } // Meaningless trivial complete example
    
  2. Build with avr-gcc test.c. No errors/warnings. a.out is created.
  3. Configure c_cpp_properties.json with a compilerPath set, possibly adding extra flags to match build configurations:
    {
      "compilerPath": "\"${config:local.avr-gcc.compilerDir}/bin/avr-gcc\" -mmcu=atmega32u4"
    }
    
  4. See error squiggles under __uint24 saying: identifier "__uint24" is undefined.

Expected behavior

No detected errors when using built-in extensions of a specified compiler.

Code sample and Logs

Full c_cpp_properties.json, with "defines" workaround
{
  "configurations": [
    {
      "name": "avr-gcc",
      "compilerPath": "\"${config:local.avr-gcc.compilerDir}/bin/avr-gcc\" -UAVR -mmcu=atmega32u4 -fshort-enums -funsigned-char -funsigned-bitfields -fno-inline-small-functions -fno-strict-aliasing -fpack-struct",
      "intelliSenseMode": "gcc-arm",
      "includePath": [
        "${workspaceFolder}/src",
        "${workspaceFolder}/lufa",
        "${workspaceFolder}/AVR++",
        "${workspaceFolder}/libCameron/src",
        "${config:local.avr-gcc.compilerDir}/avr/include"
      ],
      "defines": [
        "F_CPU=16000000UL",
        "F_USB=F_CPU",
        "USE_LUFA_CONFIG_HEADER",
        "__int24=int",
        "__uint24=unsigned"
      ],
      "cStandard": "c11",
      "cppStandard": "c++17"
    }
  ],
  "version": 4
}
Language server log (debug)
cpptools/rescanFolder
Shutting down IntelliSense server: C:\Users\camer\git\PROJECT\Firmware\test.cpp
Discovering files...
  Processing folder (recursive): C:/PROGRAM FILES/AVR-GCC/AVR8-GNU-TOOLCHAIN-WIN32_X86/AVR/INCLUDE/
  Processing folder (recursive): C:/PROGRAM FILES/AVR-GCC/AVR8-GNU-TOOLCHAIN-WIN32_X86/LIB/GCC/AVR/5.4.0/INCLUDE/
  Processing folder (recursive): C:/PROGRAM FILES/AVR-GCC/AVR8-GNU-TOOLCHAIN-WIN32_X86/LIB/GCC/AVR/5.4.0/INCLUDE-FIXED/
  Processing folder (recursive): C:/USERS/CAMER/GIT/PROJECT/FIRMWARE/
  Discovering files: 4023 file(s) processed
Checking for syntax errors: C:\Users\camer\git\PROJECT\Firmware\test.cpp
sending compilation args for C:\Users\camer\git\PROJECT\Firmware\test.cpp
  include: C:\USERS\CAMER\GIT\PROJECT\FIRMWARE\SRC
  include: C:\USERS\CAMER\GIT\PROJECT\FIRMWARE\LUFA
  include: C:\USERS\CAMER\GIT\PROJECT\FIRMWARE\AVR++
  include: C:\USERS\CAMER\GIT\PROJECT\FIRMWARE\LIBCAMERON\SRC
  include: C:\PROGRAM FILES\AVR-GCC\AVR8-GNU-TOOLCHAIN-WIN32_X86\LIB\GCC\AVR\5.4.0\INCLUDE
  include: C:\PROGRAM FILES\AVR-GCC\AVR8-GNU-TOOLCHAIN-WIN32_X86\LIB\GCC\AVR\5.4.0\INCLUDE-FIXED
  include: C:\PROGRAM FILES\AVR-GCC\AVR8-GNU-TOOLCHAIN-WIN32_X86\AVR\INCLUDE
  define: __DBL_MIN_EXP__=(-125)
  define: __HQ_FBIT__=15
  define: __UINT_LEAST16_MAX__=0xffffU
  define: __ATOMIC_ACQUIRE=2
  define: __SFRACT_IBIT__=0
  define: __FLT_MIN__=1.17549435e-38F
  define: __GCC_IEC_559_COMPLEX=0
  define: __BUILTIN_AVR_SLEEP=1
  define: __BUILTIN_AVR_COUNTLSULLK=1
  define: __BUILTIN_AVR_COUNTLSULLR=1
  define: __UFRACT_MAX__=0XFFFFP-16UR
  define: __UINT_LEAST8_TYPE__=unsigned char
  define: __DQ_FBIT__=63
  define: __INTMAX_C(c)=c ## LL
  define: __ULFRACT_FBIT__=32
  define: __SACCUM_EPSILON__=0x1P-7HK
  define: __CHAR_BIT__=8
  define: __USQ_IBIT__=0
  define: __UINT8_MAX__=0xff
  define: __ACCUM_FBIT__=15
  define: __WINT_MAX__=0x7fff
  define: __USFRACT_FBIT__=8
  define: __ORDER_LITTLE_ENDIAN__=1234
  define: __SIZE_MAX__=0xffffU
  define: __WCHAR_MAX__=0x7fff
  define: __LACCUM_IBIT__=32
  define: __DBL_DENORM_MIN__=double(1.40129846e-45L)
  define: __GCC_ATOMIC_CHAR_LOCK_FREE=1
  define: __GCC_IEC_559=0
  define: __FLT_EVAL_METHOD__=0
  define: __BUILTIN_AVR_LLKBITS=1
  define: __LLACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-47LLK
  define: __GCC_ATOMIC_CHAR32_T_LOCK_FREE=1
  define: __BUILTIN_AVR_HKBITS=1
  define: __BUILTIN_AVR_BITSLLK=1
  define: __FRACT_FBIT__=15
  define: __BUILTIN_AVR_BITSLLR=1
  define: __UINT_FAST64_MAX__=0xffffffffffffffffULL
  define: __SIG_ATOMIC_TYPE__=char
  define: __BUILTIN_AVR_UHKBITS=1
  define: __UACCUM_FBIT__=16
  define: __DBL_MIN_10_EXP__=(-37)
  define: __FINITE_MATH_ONLY__=0
  define: __LFRACT_IBIT__=0
  define: __GNUC_PATCHLEVEL__=0
  define: __AVR_MEGA__=1
  define: __LFRACT_MAX__=0X7FFFFFFFP-31LR
  define: __UINT_FAST8_MAX__=0xff
  define: __DEC64_MAX_EXP__=385
  define: __INT8_C(c)=c
  define: __UINT_LEAST64_MAX__=0xffffffffffffffffULL
  define: __SA_FBIT__=15
  define: __SHRT_MAX__=0x7fff
  define: __LDBL_MAX__=3.40282347e+38L
  define: __FRACT_MAX__=0X7FFFP-15R
  define: __UFRACT_FBIT__=16
  define: __UFRACT_MIN__=0.0UR
  define: __UINT_LEAST8_MAX__=0xff
  define: __GCC_ATOMIC_BOOL_LOCK_FREE=1
  define: __UINTMAX_TYPE__=long long unsigned int
  define: __LLFRACT_EPSILON__=0x1P-63LLR
  define: __BUILTIN_AVR_DELAY_CYCLES=1
  define: __DEC32_EPSILON__=1E-6DF
  define: __CHAR_UNSIGNED__=1
  define: __UINT32_MAX__=0xffffffffUL
  define: __GXX_EXPERIMENTAL_CXX0X__=1
  define: __ULFRACT_MAX__=0XFFFFFFFFP-32ULR
  define: __TA_IBIT__=16
  define: __LDBL_MAX_EXP__=128
  define: __WINT_MIN__=(-__WINT_MAX__ - 1)
  define: __ULLFRACT_MIN__=0.0ULLR
  define: __SCHAR_MAX__=0x7f
  define: __WCHAR_MIN__=(-__WCHAR_MAX__ - 1)
  define: __INT64_C(c)=c ## LL
  define: __DBL_DIG__=6
  define: __GCC_ATOMIC_POINTER_LOCK_FREE=1
  define: __AVR_HAVE_SPH__=1
  define: __LLACCUM_MIN__=(-0X1P15LLK-0X1P15LLK)
  define: __BUILTIN_AVR_KBITS=1
  define: __BUILTIN_AVR_ABSK=1
  define: __BUILTIN_AVR_ABSR=1
  define: __SIZEOF_INT__=2
  define: __SIZEOF_POINTER__=2
  define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=1
  define: __USACCUM_IBIT__=8
  define: __USER_LABEL_PREFIX__=
  define: __STDC_HOSTED__=1
  define: __LDBL_HAS_INFINITY__=1
  define: __LFRACT_MIN__=(-0.5LR-0.5LR)
  define: __HA_IBIT__=8
  define: __TQ_IBIT__=0
  define: __FLT_EPSILON__=1.19209290e-7F
  define: __GXX_WEAK__=1
  define: __USFRACT_IBIT__=0
  define: __LDBL_MIN__=1.17549435e-38L
  define: __FRACT_MIN__=(-0.5R-0.5R)
  define: __AVR_SFR_OFFSET__=0x20
  define: __DEC32_MAX__=9.999999E96DF
  define: __DA_IBIT__=32
  define: __INT32_MAX__=0x7fffffffL
  define: __UQQ_FBIT__=8
  define: __SIZEOF_LONG__=4
  define: __UACCUM_MAX__=0XFFFFFFFFP-16UK
  define: __UINT16_C(c)=c ## U
  define: __DECIMAL_DIG__=9
  define: __LFRACT_EPSILON__=0x1P-31LR
  define: __AVR_2_BYTE_PC__=1
  define: __ULFRACT_MIN__=0.0ULR
  define: __BUILTIN_AVR_ULLRBITS=1
  define: __LDBL_HAS_QUIET_NAN__=1
  define: __ULACCUM_IBIT__=32
  define: __UACCUM_EPSILON__=0x1P-16UK
  define: __BUILTIN_AVR_SEI=1
  define: __GNUC__=5
  define: __ULLACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-48ULLK
  define: __HQ_IBIT__=0
  define: __BUILTIN_AVR_SWAP=1
  define: __FLT_HAS_DENORM__=1
  define: __SIZEOF_LONG_DOUBLE__=4
  define: __BIGGEST_ALIGNMENT__=1
  define: __STDC_UTF_16__=1
  define: __UINT24_MAX__=16777215UL
  define: __BUILTIN_AVR_NOP=1
  define: __GNUC_STDC_INLINE__=1
  define: __DQ_IBIT__=0
  define: __DBL_MAX__=double(3.40282347e+38L)
  define: __ULFRACT_IBIT__=0
  define: __INT_FAST32_MAX__=0x7fffffffL
  define: __DBL_HAS_INFINITY__=1
  define: __INT64_MAX__=0x7fffffffffffffffLL
  define: __ACCUM_IBIT__=16
  define: __DEC32_MIN_EXP__=(-94)
  define: __BUILTIN_AVR_UKBITS=1
  define: __BUILTIN_AVR_FMULSU=1
  define: __LACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-31LK
  define: __INT_FAST16_TYPE__=int
  define: __STRICT_ANSI__=1
  define: __LDBL_HAS_DENORM__=1
  define: __BUILTIN_AVR_BITSK=1
  define: __BUILTIN_AVR_BITSR=1
  define: __cplusplus=201500L
  define: __DEC128_MAX__=9.999999999999999999999999999999999E6144DL
  define: __INT_LEAST32_MAX__=0x7fffffffL
  define: __USING_SJLJ_EXCEPTIONS__=1
  define: __DEC32_MIN__=1E-95DF
  define: __ACCUM_MAX__=0X7FFFFFFFP-15K
  define: __DEPRECATED=1
  define: __DBL_MAX_EXP__=128
  define: __USACCUM_EPSILON__=0x1P-8UHK
  define: __DEC128_EPSILON__=1E-33DL
  define: __SFRACT_MAX__=0X7FP-7HR
  define: __FRACT_IBIT__=0
  define: __PTRDIFF_MAX__=0x7fff
  define: __UACCUM_MIN__=0.0UK
  define: __AVR_ENHANCED__=1
  define: __UACCUM_IBIT__=16
  define: __BUILTIN_AVR_WDR=1
  define: __GNUG__=5
  define: __LONG_LONG_MAX__=0x7fffffffffffffffLL
  define: __SIZEOF_SIZE_T__=2
  define: __ULACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-32ULK
  define: __SIZEOF_WINT_T__=2
  define: __SA_IBIT__=16
  define: __ULLACCUM_MIN__=0.0ULLK
  define: __BUILTIN_AVR_ROUNDUHK=1
  define: __BUILTIN_AVR_ROUNDUHR=1
  define: __GXX_ABI_VERSION=1009
  define: __INT24_MAX__=8388607L
  define: __UTA_FBIT__=48
  define: __FLT_MIN_EXP__=(-125)
  define: __USFRACT_MAX__=0XFFP-8UHR
  define: __UFRACT_IBIT__=0
  define: __BUILTIN_AVR_ROUNDFX=1
  define: __BUILTIN_AVR_ROUNDULK=1
  define: __BUILTIN_AVR_ROUNDULR=1
  define: __BUILTIN_AVR_COUNTLSLLK=1
  define: __BUILTIN_AVR_COUNTLSLLR=1
  define: __BUILTIN_AVR_ROUNDHK=1
  define: __INT_FAST64_TYPE__=long long int
  define: __BUILTIN_AVR_ROUNDHR=1
  define: __DBL_MIN__=double(1.17549435e-38L)
  define: __BUILTIN_AVR_COUNTLSK=1
  define: __BUILTIN_AVR_ROUNDLK=1
  define: __BUILTIN_AVR_COUNTLSR=1
  define: __BUILTIN_AVR_ROUNDLR=1
  define: __FLT_MIN_10_EXP__=(-37)
  define: __LACCUM_MIN__=(-0X1P31LK-0X1P31LK)
  define: __ULLACCUM_FBIT__=48
  define: __BUILTIN_AVR_LKBITS=1
  define: __ULLFRACT_EPSILON__=0x1P-64ULLR
  define: __DEC128_MIN__=1E-6143DL
  define: __REGISTER_PREFIX__=
  define: __UINT16_MAX__=0xffffU
  define: __DBL_HAS_DENORM__=1
  define: __BUILTIN_AVR_ULKBITS=1
  define: __ACCUM_MIN__=(-0X1P15K-0X1P15K)
  define: __AVR_ARCH__=5
  define: __SQ_IBIT__=0
  define: __UINT8_TYPE__=unsigned char
  define: __BUILTIN_AVR_ROUNDUK=1
  define: __BUILTIN_AVR_ROUNDUR=1
  define: __UHA_FBIT__=8
  define: __NO_INLINE__=1
  define: __SFRACT_MIN__=(-0.5HR-0.5HR)
  define: __UTQ_FBIT__=128
  define: __FLT_MANT_DIG__=24
  define: __VERSION__="5.4.0"
  define: __UINT64_C(c)=c ## ULL
  define: __ULLFRACT_FBIT__=64
  define: __FRACT_EPSILON__=0x1P-15R
  define: __ULACCUM_MIN__=0.0ULK
  define: __UDA_FBIT__=32
  define: __LLACCUM_EPSILON__=0x1P-47LLK
  define: __GCC_ATOMIC_INT_LOCK_FREE=1
  define: __BUILTIN_AVR_BITSUHK=1
  define: __BUILTIN_AVR_BITSUHR=1
  define: __FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __USFRACT_MIN__=0.0UHR
  define: __BUILTIN_AVR_BITSULK=1
  define: __ULLACCUM_IBIT__=16
  define: __BUILTIN_AVR_BITSULR=1
  define: __UQQ_IBIT__=0
  define: __BUILTIN_AVR_LLRBITS=1
  define: __BUILTIN_AVR_BITSULLK=1
  define: __BUILTIN_AVR_BITSULLR=1
  define: __INT32_C(c)=c ## L
  define: __DEC64_EPSILON__=1E-15DD
  define: __ORDER_PDP_ENDIAN__=3412
  define: __DEC128_MIN_EXP__=(-6142)
  define: __UHQ_FBIT__=16
  define: __LLACCUM_FBIT__=47
  define: __BUILTIN_AVR_ROUNDULLK=1
  define: __BUILTIN_AVR_ROUNDULLR=1
  define: __INT_FAST32_TYPE__=long int
  define: __BUILTIN_AVR_HRBITS=1
  define: __UINT_LEAST16_TYPE__=unsigned int
  define: __BUILTIN_AVR_UHRBITS=1
  define: __INT16_MAX__=0x7fff
  define: __SIZE_TYPE__=unsigned int
  define: __UINT64_MAX__=0xffffffffffffffffULL
  define: __UDQ_FBIT__=64
  define: __INT8_TYPE__=signed char
  define: __AVR_ATmega32U4__=1
  define: __ELF__=1
  define: __ULFRACT_EPSILON__=0x1P-32ULR
  define: __LLFRACT_FBIT__=63
  define: __FLT_RADIX__=2
  define: __INT_LEAST16_TYPE__=int
  define: __BUILTIN_AVR_ABSFX=1
  define: __LDBL_EPSILON__=1.19209290e-7L
  define: __UINTMAX_C(c)=c ## ULL
  define: __INT24_MIN__=(-__INT24_MAX__-1)
  define: __SACCUM_MAX__=0X7FFFP-7HK
  define: __BUILTIN_AVR_ABSHR=1
  define: __SIG_ATOMIC_MAX__=0xff
  define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=1
  define: __SIZEOF_PTRDIFF_T__=2
  define: __AVR=1
  define: __BUILTIN_AVR_ABSLK=1
  define: __BUILTIN_AVR_ABSLR=1
  define: __LACCUM_EPSILON__=0x1P-31LK
  define: __DEC32_SUBNORMAL_MIN__=0.000001E-95DF
  define: __INT_FAST16_MAX__=0x7fff
  define: __UINT_FAST32_MAX__=0xffffffffUL
  define: __UINT_LEAST64_TYPE__=long long unsigned int
  define: __USACCUM_MAX__=0XFFFFP-8UHK
  define: __SFRACT_EPSILON__=0x1P-7HR
  define: __FLT_HAS_QUIET_NAN__=1
  define: __FLT_MAX_10_EXP__=38
  define: __LONG_MAX__=0x7fffffffL
  define: __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL
  define: __FLT_HAS_INFINITY__=1
  define: __USA_FBIT__=16
  define: __UINT_FAST16_TYPE__=unsigned int
  define: __DEC64_MAX__=9.999999999999999E384DD
  define: __BUILTIN_AVR_RBITS=1
  define: __CHAR16_TYPE__=unsigned int
  define: __PRAGMA_REDEFINE_EXTNAME=1
  define: __AVR_HAVE_LPMX__=1
  define: __INT_LEAST16_MAX__=0x7fff
  define: __DEC64_MANT_DIG__=16
  define: __UINT_LEAST32_MAX__=0xffffffffUL
  define: __SACCUM_FBIT__=7
  define: __GCC_ATOMIC_LONG_LOCK_FREE=1
  define: __INT_LEAST64_TYPE__=long long int
  define: __INT16_TYPE__=int
  define: __INT_LEAST8_TYPE__=signed char
  define: __SQ_FBIT__=31
  define: __DEC32_MAX_EXP__=97
  define: __INT_FAST8_MAX__=0x7f
  define: __INTPTR_MAX__=0x7fff
  define: __QQ_FBIT__=7
  define: __UTA_IBIT__=16
  define: __LDBL_MANT_DIG__=24
  define: __SFRACT_FBIT__=7
  define: __SACCUM_MIN__=(-0X1P7HK-0X1P7HK)
  define: __DBL_HAS_QUIET_NAN__=1
  define: __SIG_ATOMIC_MIN__=0
  define: __BUILTIN_AVR_FMULS=1
  define: __INTPTR_TYPE__=int
  define: __UINT16_TYPE__=unsigned int
  define: __WCHAR_TYPE__=int
  define: __SIZEOF_FLOAT__=4
  define: __AVR__=1
  define: __BUILTIN_AVR_INSERT_BITS=1
  define: __AVR_HAVE_JMP_CALL__=1
  define: __USQ_FBIT__=32
  define: __UINTPTR_MAX__=0xffffU
  define: __DEC64_MIN_EXP__=(-382)
  define: __INT_FAST64_MAX__=0x7fffffffffffffffLL
  define: __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1
  define: __FLT_DIG__=6
  define: __UINT_FAST64_TYPE__=long long unsigned int
  define: __BUILTIN_AVR_BITSHK=1
  define: __BUILTIN_AVR_BITSHR=1
  define: __INT_MAX__=0x7fff
  define: __LACCUM_FBIT__=31
  define: __USACCUM_MIN__=0.0UHK
  define: __UHA_IBIT__=8
  define: __INT64_TYPE__=long long int
  define: __BUILTIN_AVR_BITSLK=1
  define: __BUILTIN_AVR_BITSLR=1
  define: __FLT_MAX_EXP__=128
  define: __AVR_HAVE_MUL__=1
  define: __UTQ_IBIT__=0
  define: __DBL_MANT_DIG__=24
  define: __BUILTIN_AVR_ULLKBITS=1
  define: __INT_LEAST64_MAX__=0x7fffffffffffffffLL
  define: __AVR_HAVE_MOVW__=1
  define: __DEC64_MIN__=1E-383DD
  define: __WINT_TYPE__=int
  define: __UINT_LEAST32_TYPE__=long unsigned int
  define: __SIZEOF_SHORT__=2
  define: __ULLFRACT_IBIT__=0
  define: __LDBL_MIN_EXP__=(-125)
  define: __UDA_IBIT__=32
  define: __INT_LEAST8_MAX__=0x7f
  define: __LFRACT_FBIT__=31
  define: __LDBL_MAX_10_EXP__=38
  define: __ATOMIC_RELAXED=0
  define: __DBL_EPSILON__=double(1.19209290e-7L)
  define: __BUILTIN_AVR_BITSUK=1
  define: __BUILTIN_AVR_BITSUR=1
  define: __UINT8_C(c)=c
  define: __INT_LEAST32_TYPE__=long int
  define: __BUILTIN_AVR_URBITS=1
  define: __SIZEOF_WCHAR_T__=2
  define: __UINT64_TYPE__=long long unsigned int
  define: __LLFRACT_MAX__=0X7FFFFFFFFFFFFFFFP-63LLR
  define: __TQ_FBIT__=127
  define: __INT_FAST8_TYPE__=signed char
  define: __ULLACCUM_EPSILON__=0x1P-48ULLK
  define: __BUILTIN_AVR_ROUNDK=1
  define: __BUILTIN_AVR_ROUNDR=1
  define: __UHQ_IBIT__=0
  define: __LLACCUM_IBIT__=16
  define: __AVR_DEVICE_NAME__=atmega32u4
  define: __DBL_DECIMAL_DIG__=9
  define: __STDC_UTF_32__=1
  define: __DEC_EVAL_METHOD__=2
  define: __TA_FBIT__=47
  define: __UDQ_IBIT__=0
  define: __ORDER_BIG_ENDIAN__=4321
  define: __WITH_AVRLIBC__=1
  define: __ACCUM_EPSILON__=0x1P-15K
  define: __UINT32_C(c)=c ## UL
  define: __BUILTIN_AVR_COUNTLSUHK=1
  define: __INTMAX_MAX__=0x7fffffffffffffffLL
  define: __BUILTIN_AVR_COUNTLSUHR=1
  define: __BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __FLT_DENORM_MIN__=1.40129846e-45F
  define: __LLFRACT_IBIT__=0
  define: __INT8_MAX__=0x7f
  define: __UINT_FAST32_TYPE__=long unsigned int
  define: __CHAR32_TYPE__=long unsigned int
  define: __BUILTIN_AVR_COUNTLSULK=1
  define: __BUILTIN_AVR_COUNTLSULR=1
  define: __FLT_MAX__=3.40282347e+38F
  define: __USACCUM_FBIT__=8
  define: __BUILTIN_AVR_COUNTLSFX=1
  define: __INT32_TYPE__=long int
  define: __SIZEOF_DOUBLE__=4
  define: __UFRACT_EPSILON__=0x1P-16UR
  define: __BUILTIN_AVR_COUNTLSHK=1
  define: __BUILTIN_AVR_COUNTLSHR=1
  define: __INTMAX_TYPE__=long long int
  define: __BUILTIN_AVR_ABSLLK=1
  define: __BUILTIN_AVR_ABSLLR=1
  define: __DEC128_MAX_EXP__=6145
  define: __AVR_HAVE_16BIT_SP__=1
  define: __ATOMIC_CONSUME=1
  define: __GNUC_MINOR__=4
  define: __UINTMAX_MAX__=0xffffffffffffffffULL
  define: __DEC32_MANT_DIG__=7
  define: __HA_FBIT__=7
  define: __BUILTIN_AVR_COUNTLSLK=1
  define: __BUILTIN_AVR_COUNTLSLR=1
  define: __BUILTIN_AVR_CLI=1
  define: __DBL_MAX_10_EXP__=38
  define: __LDBL_DENORM_MIN__=1.40129846e-45L
  define: __INT16_C(c)=c
  define: __STDC__=1
  define: __PTRDIFF_TYPE__=int
  define: __LLFRACT_MIN__=(-0.5LLR-0.5LLR)
  define: __BUILTIN_AVR_LRBITS=1
  define: __ATOMIC_SEQ_CST=5
  define: __DA_FBIT__=31
  define: __UINT32_TYPE__=long unsigned int
  define: __BUILTIN_AVR_ROUNDLLK=1
  define: __UINTPTR_TYPE__=unsigned int
  define: __BUILTIN_AVR_ROUNDLLR=1
  define: __USA_IBIT__=16
  define: __BUILTIN_AVR_ULRBITS=1
  define: __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD
  define: __DEC128_MANT_DIG__=34
  define: __LDBL_MIN_10_EXP__=(-37)
  define: __BUILTIN_AVR_COUNTLSUK=1
  define: __BUILTIN_AVR_COUNTLSUR=1
  define: __SIZEOF_LONG_LONG__=8
  define: __ULACCUM_EPSILON__=0x1P-32ULK
  define: __SACCUM_IBIT__=8
  define: __GCC_ATOMIC_LLONG_LOCK_FREE=1
  define: __LDBL_DIG__=6
  define: __FLT_DECIMAL_DIG__=9
  define: __UINT_FAST16_MAX__=0xffffU
  define: __GCC_ATOMIC_SHORT_LOCK_FREE=1
  define: __BUILTIN_AVR_ABSHK=1
  define: __BUILTIN_AVR_FLASH_SEGMENT=1
  define: __ULLFRACT_MAX__=0XFFFFFFFFFFFFFFFFP-64ULLR
  define: __UINT_FAST8_TYPE__=unsigned char
  define: __USFRACT_EPSILON__=0x1P-8UHR
  define: __ULACCUM_FBIT__=32
  define: __QQ_IBIT__=0
  define: __ATOMIC_ACQ_REL=4
  define: __ATOMIC_RELEASE=3
  define: __BUILTIN_AVR_FMUL=1
  define: F_CPU=16000000UL
  define: F_USB=F_CPU
  define: USE_LUFA_CONFIG_HEADER
  other: --g++
  other: --gnu_version=50400
  stdver: c++17
  intelliSenseMode: windows-gcc-arm
Queueing IntelliSense update for files in translation unit of: C:\Users\camer\git\PROJECT\Firmware\test.cpp
cpptools/finishUpdateSquiggles
Error squiggle count: 1
Update IntelliSense time (sec): 0.328
cpptools/getFoldingRanges: C:\Users\camer\git\PROJECT\Firmware\test.cpp (id: 34)
  335 file(s) removed from database
Done discovering files.
Parsing open files...
Populating include completion cache.
Parsing remaining files...
Checking for syntax errors: C:\Users\camer\git\PROJECT\Firmware\test.cpp
Queueing IntelliSense update for files in translation unit of: C:\Users\camer\git\PROJECT\Firmware\test.cpp
Done parsing open files.

Additional context

Macros are detected, like __AVR_ATmega32U4__, but it seems other unique built-ins are not, hence this issue.

Environment

  • OS and Version: Windows 11
  • VS Code Version: 1.71.2
  • C/C++ Extension Version: v1.12.4

Workaround

I can use the defines field to fake it, but this doesn't work 100%. For instance, static_asserts and if constexpr might evaluate differently by the editor than the real compiler in use.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the diagnostic with test.c and the c_cpp_properties.json configuration using avr-gcc and __uint24. Start by tracing how the configured compiler's built-in extensions reach IntelliSense, then verify that the expected no-error behavior is covered by an appropriate test or reproduction.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, vscode
Domain
developer-experience, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.