]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
macro: EDG compiler frontends doesn't support enum types 38040/head
authorLuca Boccassi <luca.boccassi@gmail.com>
Thu, 3 Jul 2025 00:23:31 +0000 (01:23 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 3 Jul 2025 00:24:17 +0000 (01:24 +0100)
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
src/systemd/_sd-common.h

index 69bbeead48356c683ece9b016087ab59fc46c27b..7a962df82a068998799772ca4e6e88fd2be26809 100644 (file)
@@ -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
index 715b3ca297edc69a68c55a1cf150846bc7f974cb..1b855bfdd235f1603be9c1ff7baef248761987dc 100644 (file)
@@ -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