Re[5]: А почему нет вызова функций с именованными аргументами?
От: enji  
Дата: 12.09.14 05:26
Оценка: +1
Здравствуйте, uzhas, Вы писали:

U>
U>//a.cpp
U>void f(int, int); // определение где-то в другом месте: в другом файле или либе

U>void g()
U>{
U>  f(4, 5);  
U>}
U>


ну и какие тут проблемы? Просто нельзя вызвать f с именоваными параметрами. Если у тебя в одной единице f(int a, int b), а в другой — f(int b, int a) — ну попытка вызвать f(.a=1, .b=2) — нарушение ODR. Такое же, как иметь две структуры с одинаковыми именами и разным содержимым.

U>еще если вспомнить про экпортированные функции, то вообще труба, еще и ABI ломать надо


Что не так с экспортированными функциями и зачем ломать abi? Данная штука ведет себя примерно так же, как и параметры по умолчанию — т.е. разворачивается компилятором в обычный вызов функции сразу в месте вызова с той информацией, которая там компилятору доступна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.