[C] static переменная в __inline функции
одна
Действительно.
Было бы странно, если бы директива оптимизатора влияла бы на семантику слова static. Причём это было бы в стандарте (раз ты компилятор не указал).
оо, знаешь, сколько странных вещей бывает?
__inline управляет не оптимизатором, а линковщиком. Оптимизатор может inline-ить все что ему вздумается...
__inline управляет не оптимизатором, а линковщикомА можно пояснить эти слова?
всегда думал что inline действует только в пределах одного модуля и занимается этим именно какой-то пасс отимизатора.
Я про C++ говорю, но думаю в чистом C все точно так же.
Да, действительно, например, в glibc любят аццы наопределять функций в хедерах.
Меня заинтересовали твои слова потому, что некоторое время назад я уже задавался вопросом, существуют ли линкеры, которые умеют делать инлайнинг?
Кстати, здесь такой вопрос задавал.
Так ничего и не нарыл на эту тему.
А подход, который ты описал - это же фактически костыль, который эмулирует именно функциональность инлайнинга на уровне линкера, не так ли?
В сущности же всё-таки в этом подходе инлайнинг не имеет никакого отношения к линкеру, ибо делается при сборке одтельной единицы компиляции.
например компиляторы давно уже не обращают внимания на слово register.ещё как обращают внимание, пробовал когда то на VC++6 или на VC++7 точно не помню.
Другое дело, что может больше и смысла нет его использовать.
Смысл использовать его есть, но не в каждой предметной области, вероятно. При программировании DSP на С register весьма актуален.
Сорри, не зарегистрировался.
При программировании микропроцессоров у компилятора обычно ещё штук двадцать дополнительных инструкций есть.
То есть, если компилятор под некую архитектуру поддерживает С99, то он обязан понимать storage class register. Согласно тому же стандарту, он может учитывать наличие register в декларации, либо не учитывать, на его усмотрение.
Оставить комментарий
sergey_m
Будет одна копия этой переменной или столько, сколько раз заинлайнена функция?