microsoft / vscode-cpptools

Official repository for the Microsoft C/C++ extension for VS Code.
Other
5.53k stars 1.56k forks source link

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

Open cinderblock opened 2 years ago

cinderblock commented 2 years ago

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 ```json { "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) ```log 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

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.

github-actions[bot] commented 1 year ago

This feature request is being closed due to insufficient upvotes. Please leave a πŸ‘-upvote or πŸ‘Ž-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog.

kdekaluga commented 2 months ago

Please, add this feature, I really believe it's not that hard.

bobbrow commented 2 months ago

This will be possible when #6931 is complete.

cinderblock commented 2 months ago

Can we keep this issue open until it can be fixed?

bobbrow commented 2 months ago

@cinderblock if you click on the πŸ‘ in the first post, our bot may be satisfied and reactivate this.

cinderblock commented 2 months ago

Posting it in the first place doesn't automatically count as an upvote?

bobbrow commented 2 months ago

I didn't realize you were the author. No, it doesn't. I guess that's a way to get an extra vote to satisfy the threshold requirements. Though what I expect to happen when #6931 is done is that we'll have support for a few new embedded compilers baked in to the extension and then for other compilers support will be configured by adding a json configuration with the stuff you need in it. But in full disclosure, it's not going to look too different from what you're doing with "defines" right now because we can't possibly support every compiler extension out there natively.

github-actions[bot] commented 2 months ago

This feature request has received enough votes to be added to our backlog.