From e01ca3afdb297fe879eaabd02901ad2a4b547d0c Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Thu, 3 Jul 2025 01:23:31 +0100 Subject: [PATCH] macro: EDG compiler frontends doesn't support enum types It declares STDC_VERSION 202311L but still doesn't support this feature: https://en.cppreference.com/w/c/compiler_support/23 The EDG frontend is used by intellisense, which is the default engine in VSCode, so parsing is currently broken and tons of spurious errors are shown. Skip this feature when this compiler frontend is used. Follow-up for 92100f14c3b054903053559ed831a1b25033046c --- src/fundamental/macro-fundamental.h | 2 +- src/systemd/_sd-common.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 69bbeead483..7a962df82a0 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -472,7 +472,7 @@ assert_cc(STRLEN(__FILE__) > STRLEN(RELATIVE_SOURCE_PATH) + 1); #define PROJECT_FILE (&__FILE__[STRLEN(RELATIVE_SOURCE_PATH) + 1]) /* In GCC 14 (C23) we can force enums to have the right types, and not solely rely on language extensions anymore */ -#if __GNUC__ >= 14 || __STDC_VERSION__ >= 202311L +#if (__GNUC__ >= 14 || __STDC_VERSION__ >= 202311L) && !defined(__EDG__) # define ENUM_TYPE_S64(id) id : int64_t #else # define ENUM_TYPE_S64(id) id diff --git a/src/systemd/_sd-common.h b/src/systemd/_sd-common.h index 715b3ca297e..1b855bfdd23 100644 --- a/src/systemd/_sd-common.h +++ b/src/systemd/_sd-common.h @@ -117,7 +117,7 @@ typedef void (*_sd_destroy_t)(void *userdata); _SD_##id##_INT64_MAX = INT64_MAX /* In GCC 14 (C23) we can force enums to have the right types, and not solely rely on language extensions anymore */ -#if ((__GNUC__ >= 14) || (__STDC_VERSION__ >= 202311L)) && !defined(__cplusplus) +#if ((__GNUC__ >= 14) || (__STDC_VERSION__ >= 202311L)) && !defined(__cplusplus) && !defined(__EDG__) # define _SD_ENUM_TYPE_S64(id) id : int64_t #else # define _SD_ENUM_TYPE_S64(id) id -- 2.47.3