LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

Неужели придется самому такую либу писать?

Не видел существующих библиотек с такой функциональностью. Интерфейс, предложенный в начальном сообщении, можно реализовать следующим образом:

enum {
	END,
	STR,
	UINT16,
};

void my_print(int op, ...)
{
	va_list args;
	va_start(args, op);
	for (; op != END; op = va_arg(args, int)) {
		switch (op) {
		case STR:
			printf("%s", va_arg(args, const char*));
			break;
		case UINT16:
			printf("%u", va_arg(args, uint16_t));
			break;
		default:
			abort();
		}
	}
	va_end(args);
}

Исходная версия X512, :

Неужели придется самому такую либу писать?

Не видел существующих библиотек с такой функциональностью. Интерфейс, предложенным в начальном сообщении можно реализовать следующим образом:

enum {
	END,
	STR,
	UINT16,
};

void my_print(int op, ...)
{
	va_list args;
	va_start(args, op);
	for (; op != END; op = va_arg(args, int)) {
		switch (op) {
		case STR:
			printf("%s", va_arg(args, const char*));
			break;
		case UINT16:
			printf("%u", va_arg(args, uint16_t));
			break;
		default:
			abort();
		}
	}
	va_end(args);
}