У меня есть функция:
SendMsg(int x, string y, ...) { /*some code*/ }
У меня есть макрос:
FOO(X, STRING, ...) SendMsg(X, STRING "%s %d", ##__VA_ARGS__, "xyz", 123)
так что я могу иметь что-то вроде этого:
FOO(1000, "Note that line %d containing %d words is invalid", 5, 10);
расширен до
SendMsg(1000, "Note that line %d containing %d words is invalid" "%s %d", 5, 10, "xyz", 123);
Иногда у меня что-то вроде этого:
FOO(1000, "String without variables");
который должен быть расширен как
SendMsg(1000, "String without variables" "%s %d", "xyz", 123)
Макрос пока работает нормально.
Но иногда у меня что-то вроде этого:
FOO(1000);
который должен быть расширен как
SendMsg(1000, "%s "%d", "xyz", 123);
Но это не работает. Я получаю сообщение об ошибке, что "макросу FOO требуется 3 аргумента, но задан только 1". Любые идеи?