Я знаю, что это общий вопрос, но я все еще не могу полностью обдумать его.
В программе C или С++, сгенерированной из нескольких разных исходных и заголовочных файлов, будет ли каждый заголовочный файл включаться только один раз во весь код при использовании защитников заголовков?
Кто-то сказал мне ранее, что заголовочный файл (с включенными охранниками) будет включаться только один раз в одну единицу перевода, но несколько раз во весь код. Это правда?
Если он включается только один раз по всему коду, когда один файл хочет включить его, и препроцессор обнаруживает, что он уже включен, как этот файл, который хочет его использовать, знает местонахождение в коде, который ранее был включен?