Я пытаюсь преобразовать некоторые Java-код в С. Java код выглядит следующим образом:Получение размера varargs в C?
public static int minimum(int... minimum) {
assert(minimum.length > 0);
if (minimum.length > 0)
.... // some code that i am able to translate to C without any hassle
}
Теперь я понимаю, как иметь в С переменным числом аргументов, используя заголовок stdarg.h
и использовать макросы, которые. Однако я застрял, выполняя часть minimum.length
.
Я пробовал strlen
, но терминал дает мне несовместимое целое число для предупреждения об указателе. Есть ли способ в C, где я могу воспроизвести то же самое, что и Java?
Rev 2 '#define minimum .. . очень интересно! Кажется, оценивать аргументы только один раз. Хорошо, если код был 'printf («% d \ n », минимум (a ++, 30, 7, 1, 4));' – chux
Спасибо @chux, отредактирован. И да, 'sizeof' [не оценивает аргументы] (http://stackoverflow.com/a/8225813/1606345) (кроме случаев, когда это массив переменной длины) –
... и _compound literal_ [не может быть VLA] (http://stackoverflow.com/a/14550583/2410359). Хорошее решение. (Я думаю, что это решение должно быть указано до уродливого). – chux