Какой правильный термин для токена?

Рассмотрим printf:

int printf ( const char * format, ... );

Каковы термины, используемые для описания ... и функций, которые его используют? Я называю это многоточием, но это как вызов & оператора ampersand.

Ответы

Ответ 2

Обозначение эллипсиса (,...) p202 "K + R Язык программирования C"

Ответ 3

"Эллипсис" на самом деле часто является лучшим термином здесь. Иногда мы ссылаемся на "аргументы, переданные с использованием многоточия" (С++ 03 8.3.5p2). В контексте определения наилучшей перегруженной функции можно сказать, что аргумент "соответствует многоточию" (С++ 03 13.3.2p2).

printf и другие подобные функции часто называются "вариативными функциями".

Примечание. Приходящий стандарт С++ 0x предлагает два разных способа объявления и реализации вариационных функций (путь va_arg и способ шаблона). Но оба они связаны с маркером с многоточием.

Ответ 4

Оператор Ellipsis - единственный термин, который я слышал - он достаточно редок (к счастью), что вам больше ничего не нужно!

Ответ 5

Эта спецификация проекта С++ относится к ней просто как " эллипсис", а иногда и к определенной или неопределенной статье, как эллипсис или эллипсис.

5.2.2 Раздел 6 "Функциональный вызов" содержит:

Можно объявить функцию, чтобы принимать меньше аргументов (путем объявления аргументы по умолчанию (8.3.6)) или более аргументы (используя многоточие,... 8.3.5) чем число параметров в определении функции (8.4).

8.3.5 Раздел "Функции" содержит:

Если параметр-объявление-предложение завершается с эллипсисом, количество аргументов должно быть равно или больше, чем количество параметры, которые не имеют значения по умолчанию аргумент.

8.3.6 раздел 4 содержит пример кода:

void g(int =  0, ...); // OK, ellipsis is not a parameter so it can follow
                       // a parameter with a default argument

Дополнительное педантизм: раздел 13.3.3.1.3 ( "Последовательности преобразования эллипса" ) относится к "спецификации параметра многоточия". Однако, как указано в приведенном выше примере кода, многоточие не является, строго говоря, параметром. 8.3.5 в разделе 1 объясняется, что, хотя эллипсис появляется в объявлении параметра-объявления, он следует за списком-декларацией параметров.

Ответ 6

В дополнение к "многоточию" и "вариационной функции" также видны термины "vararg" и "varargs". Это, по-видимому, аббревиатура для "списка переменных аргументов", судя по языку, окружающему заголовок (LEGACY) <varargs.h> в POSIX.

Кроме того, основная причина, по которой термин "амперсанд-оператор" не используется, заключается в том, что амперсанд может представлять собой любой из двух разных операторов в зависимости от контекста, что сделает этот термин неоднозначным. Это не происходит с многоточием; для него нет другого значения, поэтому использование термина "эллипсис" для токена "..." не, как использование термина "амперсанд-оператор" для токена "&".

Ответ 8

Мартин и Демьян оба правы:

  • Три "." вместе образуют многоточие (на Macintosh это единственный специальный символ "...", но не используемый для С++)
  • В С++ эллипсис используется для определения списка параметров длины переменной