Что бы это ни стоило, справочная страница неверна. Прототипы, которые он показывает:
int open(const char * pathname, int flags);
int open(const char * pathname, int flags, mode_t mode);
не эквивалентны правильному прототипу:
int open(const char * pathname, int flags, ...);
Использование неверных функций, которые она предоставляет (например, если вы сами создаете прототип функции, а не включаете правильный заголовок), приведет к тому, что ваша программа будет иметь неопределенное поведение. (И это не просто теория; вероятно, он не будет работать на x86_64 и других платформах с ABI с передачей по регистру.)
Что справочная страница пыталась выразить (и очень плохо с этим справилась), так это то, что переменная часть списка аргументов open
может быть либо пустой, либо одним аргументом типа mode_t
, где отсутствие или наличие необязательного аргумента зависит от значения из flags
.
person
R.. GitHub STOP HELPING ICE
schedule
17.10.2010