Я как-то по неопытности: Используя макрос типа:
#define GENERIC_MAX(x, y) ((x) > (y) ? (x) : (y))
В качестве одного из параметров использовал вызов функции. А функция эта кроме всего прочего общалась по SPI с памятью.
Вот я тогда удивился, увидев по осциллу двойные обращения по SPI. Тоже получилась безопасная безалаберная программа :-)