Hi Did CBS win the obfuscated C contest yet? I was just looking at a msan issue and then looked at this: CHECK(FUNC_SEI(message_list)(ctx, rw, ¤t->message_list, 1)); #define CHECK(call) do { \ err = (call); \ if (err < 0) \ return err; \ } while (0) #define FUNC_NAME2(rw, codec, name) cbs_ ## codec ## _ ## rw ## _ ## name #define FUNC_NAME1(rw, codec, name) FUNC_NAME2(rw, codec, name) #define FUNC_H264(name) FUNC_NAME1(READWRITE, h264, name) #define FUNC_H265(name) FUNC_NAME1(READWRITE, h265, name) #define FUNC_H266(name) FUNC_NAME1(READWRITE, h266, name) #define FUNC_SEI(name) FUNC_NAME1(READWRITE, sei, name) #define SEI_FUNC(name, args) \ static int FUNC(name) args; \ static int FUNC(name ## _internal)(CodedBitstreamContext *ctx, \ RWContext *rw, void *cur, \ SEIMessageState *state) \ { \ return FUNC(name)(ctx, rw, cur, state); \ } \ static int FUNC(name) args anyway, can we remove all preprocessor use from cbs ? thx -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Dictatorship naturally arises out of democracy, and the most aggravated form of tyranny and slavery out of the most extreme liberty. -- Plato