Можно ли переписать следующий код, чтобы он соответствовал ISO C? Следующие макросы выполняют malloc и инициализацию для данного типа и значения.
Текущий код работает с компиляторами gcc (uиспользует расширение gcc), но оно не является стандартным. Если я использую -pedantic, я получаю предупреждения.
#ifdef __GNUC__
#define NM_CVPTR(type, value) \
({ \
type * var = NULL; \
var = nm_malloc(sizeof(*var)); \
*var = value; \
(const void*) var; \
}) \
#define NM_VPTR(type, value) \
({ \
type * var = NULL; \
var = nm_malloc(sizeof(*var)); \
*var = value; \
(void*) var; \
}) \
#define NM_PTR(type, value) \
({ \
type * var = NULL; \
var = nm_malloc(sizeof(*var)); \
*var = value; \
(type *) var; \
}) \
#endif