Некоторые реализации будут обрабатывать импортированные и экспортированные символы в соответствии с правилами, определенными рядом соглашений для платформы, которые обычно описываются в документе, который на современном языке называется двоичным интерфейсом приложения.Если один модуль (модуль компиляции) экспортирует символ, а другой импортирует его, каждое определение и их взаимодействие будут вести себя так, как описано ABI, независимо от правил языка кода, который импортирует или экспортирует символы.
Другие реализации, особенно те, которые используют оптимизацию всей программы, могут обрабатывать символы, которые экспортируются из одного модуля компиляции C и используются другим способом, отличным от того, что предлагал бы ABI, особенно если это позволило бы сделать вещи более эффективными, илипозволяют системе сборки производить лучшую диагностику.
Поскольку оба подхода имеют существенные преимущества и недостатки, стандарт не зависит от того, как реализации обрабатывают взаимодействия между функциями в разных модулях.Если на платформе ABI определено поведение, и реализации C документируют, что модули C взаимодействуют так, как определено ABI, то поведение будет определяться для этой реализации независимо от того, накладывает ли Стандарт какие-либо требования.В других случаях, когда Стандарт не предъявляет никаких требований, может произойти все что угодно.