Вспомнил тут один интересный баг, с которым неделю возился. В файлах А и Б есть одинаковые inline функции GetPort(); они обе возвращают разные порты. Эти файлы оба косвенно инклудятся в файл C, где GetPort() вызывается. В результате вызывался GetPort из А, а рассчитывали на из Б. Уважаемые читатели стандарта, почему это скомпилилось, а не бросило ambiguous ошибку?
Вспомнил тут один интересный баг, с которым неделю возился. В файлах А и Б есть одинаковые inline функции GetPort(); они обе возвращают разные порты. Эти файлы оба косвенно инклудятся в файл C, где GetPort() вызывается. В результате вызывался GetPort из А, а рассчитывали на из Б. Уважаемые читатели стандарта, почему это скомпилилось, а не бросило ambiguous ошибку?
Нееее... Я не забуду момент, когда смотрел в хедер на сигнатуру void foo(); А потом смотрел что она используется везде как foo(bar)... А потом я почитал Си стандарт....
Нееее... Я не забуду момент, когда смотрел в хедер на сигнатуру void foo(); А потом смотрел что она используется везде как foo(bar)... А потом я почитал Си стандарт....
при использовании static функция невидима для других юнитов компиляции, про аргументы понятно