А я тут в общем свою обобщённую header-only библиотеку для динмассивов сделал таки. Для функции роста решил взять из голанга вместо линейного удвоения, как это часто делают - я там даже целый тестовый стенд на питоне накалякал, чтобы более интерактивно смотреть за поведением функций, скину в комменты. Но забавно оказалось, когда я попытался сделать:
PUSH(vec, f(1, 2))
И раскрылось оно в
... = f(1; } (да, прям так и кончается). Ну пиздец.
Пошёл узнавать - да, удостоверился, что препроцессор не следует грамматике С. Вот и рассматривал запятую в f(1, 2), как свою запятую. То есть - для него это два разных аргумента: f(1 и 2). Стрельба по коленям, внезапно, вызывает боль и отстреленное колено.