Здравствуйте, 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? Данная штука ведет себя примерно так же, как и параметры по умолчанию — т.е. разворачивается компилятором в обычный вызов функции сразу в месте вызова с той информацией, которая там компилятору доступна.