MBR (mbr) wrote,
MBR
mbr

Category:

Программизм

Продолжаю поиск кандидатов в команду. Сегодня один признал полное непонимание работы линкера в части внутренней/внешней линковки (internal/external linkage). С семилетним опытом разработки embedded c, позиционирующий себя как senior разработчик. Стыд и срам. Был еще один, но он сам быстро понял ошибку :)

В чем суть вопроса. Есть два модуля, в них определена глобальная переменная x:

foo.c:
int x;

bar.c:
int x;

Что будет? Чтобы понять, необходимо обратиться к ISO, пункт 6.2.2 Linkages of identifiers.

п.2:
In the set of translation units and libraries that constitutes an entire program, each declaration of a particular identifier with
external linkage denotes the same object or function. Within one translation unit, each declaration of an identifier with internal
linkage denotes the same object or function.


Иными словами, если глобальная переменная указана как external linkage (ключевое слово external), она определена во всех этих модулях. При internal linkage (ключевое слово static) - только в том модуле, в котором описана.

А если ключевое слово не указано? Снова смотрим в стандарт, п. 5:

If the declaration of an identifier for an object has file scope and no storage-class specifier, its linkage is external.

Я думаю, теперь можно и не отвечать, что будет, это очевидно ;) Ошибка исключительно новичка, но не специалиста с 7-летним стажем.
Tags: embed
Subscribe

  • Советский инженер - это звучит гордо

    Порадовался с последнего стеба vladimir_akinin над программистами. Однако в комменты выползло какое-то количество старых пердунов,…

  • В поддержку FSF

    Как многие знают, сейчас в отношении Ричарда Столлмана развернулась травля относительно, якобы, имевших место некорректных его личных высказываний.…

  • я все о том же

    После процессоров начались проблемы c dc/dc. И на этом явно все не остановится. Брал в эти выходные OSB по 1000 р. за штуку. Остались последние,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 125 comments

  • Советский инженер - это звучит гордо

    Порадовался с последнего стеба vladimir_akinin над программистами. Однако в комменты выползло какое-то количество старых пердунов,…

  • В поддержку FSF

    Как многие знают, сейчас в отношении Ричарда Столлмана развернулась травля относительно, якобы, имевших место некорректных его личных высказываний.…

  • я все о том же

    После процессоров начались проблемы c dc/dc. И на этом явно все не остановится. Брал в эти выходные OSB по 1000 р. за штуку. Остались последние,…