glebius
|
geek
|
|
|
|
Рег.: 07.12.2002
|
Сообщений: 45226
|
|
Рейтинг: 13030
|
|
[C] static переменная в __inline функции
07.12.2005 14:19
|
|
|
Будет одна копия этой переменной или столько, сколько раз заинлайнена функция?
|
shut up and code |
|
Kai
|
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 8251
|
|
Рейтинг: 818
|
|
Re: [C] static переменная в __inline функции
[re: glebius]
07.12.2005 14:21
|
|
|
|
glebius
|
geek
|
|
|
|
Рег.: 07.12.2002
|
Сообщений: 45226
|
|
Рейтинг: 13030
|
|
Re: [C] static переменная в __inline функции
[re: Kai]
07.12.2005 14:27
|
|
|
Действительно.
|
shut up and code |
|
Fj_
|
Carpal Tunnel
|
|
|
|
Рег.: 12.09.2004
|
Сообщений: 8795
|
|
Рейтинг: 3287
|
|
Re: [C] static переменная в __inline функции
[re: glebius]
07.12.2005 14:39
|
|
|
Было бы странно, если бы директива оптимизатора влияла бы на семантику слова static. Причем это было бы в стандарте (раз ты компилятор не указал).
|
The data is the error (c)IIS FTP Server. |
|
madkroz
|
tta addict
|
|
|
|
Рег.: 19.07.2003
|
Сообщений: 2779
|
Из: привет
|
Рейтинг: 8
|
|
Re: [C] static переменная в __inline функции
[re: Fj_]
07.12.2005 14:43
|
|
|
оо, знаешь, сколько странных вещей бывает?
|
|
Druxa
|
Дрюха
|
|
|
|
Рег.: 27.06.2003
|
Сообщений: 2722
|
Из: Троицк
|
Рейтинг: 1974
|
|
Re: [C] static переменная в __inline функции
[re: Fj_]
07.12.2005 23:32
|
|
|
__inline управляет не оптимизатором, а линковщиком. Оптимизатор может inline-ить все что ему вздумается...
|
нет, я не богат... я сказочно не богат... но я и не умен... |
|
LIfelike
|
old hand
|
|
|
|
Рег.: 27.02.2004
|
Сообщений: 765
|
Из: Б
|
Рейтинг: 0
|
|
Re: [C] static переменная в __inline функции
[re: Druxa]
07.12.2005 23:49
|
|
|
В ответ на:
__inline управляет не оптимизатором, а линковщиком
А можно пояснить эти слова?
|
- Похоже, ваш сын столкнулся с экзистенционализмом... - Е**ный Интернет! |
|
blind
|
still alive
|
|
|
|
Рег.: 16.01.2004
|
Сообщений: 23129
|
Из: Хамовники
|
Рейтинг: 16483
|
|
Re: [C] static переменная в __inline функции
[re: Druxa]
08.12.2005 00:09
|
|
|
всегда думал что inline действует только в пределах одного модуля и занимается этим именно какой-то пасс отимизатора.
|
13/37 =) |
|
Druxa
|
Дрюха
|
|
|
|
Рег.: 27.06.2003
|
Сообщений: 2722
|
Из: Троицк
|
Рейтинг: 1974
|
|
Re: [C] static переменная в __inline функции
[re: LIfelike]
08.12.2005 00:35
|
|
|
Бывают функции, тела которых определены прямо в хедерах. Тем самым у функции есть шанс попасть в разные .o файлы. и чтобы при линковке не было multiple definition, при таких функциях надо ставить inline. Никакого другого смысла современные компиляторы слову inline не придают. Также как например компиляторы давно уже не обращают внимания на слово register. Управление оптимизатором на таком уровне это прошлый век. Я про C++ говорю, но думаю в чистом C все точно так же.
|
нет, я не богат... я сказочно не богат... но я и не умен... |
|
LIfelike
|
old hand
|
|
|
|
Рег.: 27.02.2004
|
Сообщений: 765
|
Из: Б
|
Рейтинг: 0
|
|
Re: [C] static переменная в __inline функции
[re: Druxa]
08.12.2005 10:10
|
|
|
Спасибо. Да, действительно, например, в glibc любят аццы наопределять функций в хедерах.
Меня заинтересовали твои слова потому, что некоторое время назад я уже задавался вопросом, существуют ли линкеры, которые умеют делать инлайнинг? Кстати, здесь такой вопрос задавал. Так ничего и не нарыл на эту тему.
А подход, который ты описал - это же фактически костыль, который эмулирует именно функциональность инлайнинга на уровне линкера, не так ли? В сущности же все-таки в этом подходе инлайнинг не имеет никакого отношения к линкеру, ибо делается при сборке одтельной единицы компиляции.
|
- Похоже, ваш сын столкнулся с экзистенционализмом... - Е**ный Интернет! |
|
_eXtreme
|
веселый, экстремал
|
|
|
|
Рег.: 07.12.2005
|
Сообщений: 770
|
Из: orig. from Yerevan, Armenia
|
Рейтинг: 0
|
|
Re: [C] static переменная в __inline функции
[re: Druxa]
08.12.2005 22:55
|
|
|
Quote:
например компиляторы давно уже не обращают внимания на слово register.
еще как обращают внимание, пробовал когда то на VC++6 или на VC++7 точно не помню. Другое дело, что может больше и смысла нет его использовать.
|
надежный винтик
|
|
|
Re: [C] static переменная в __inline функции
[re: _eXtreme]
08.12.2005 23:00
|
|
|
Строго говоря, компиляторы не обязаны обращать на него внимание, и никогда не были обязаны: это не директива, а совет компилятору.
Смысл использовать его есть, но не в каждой предметной области, вероятно. При программировании DSP на С register весьма актуален.
|
|
LIfelike
|
old hand
|
|
|
|
Рег.: 27.02.2004
|
Сообщений: 765
|
Из: Б
|
Рейтинг: 0
|
|
Re: [C] static переменная в __inline функции
[re: Anonymous]
08.12.2005 23:01
|
|
|
Сорри, не зарегистрировался.
|
- Похоже, ваш сын столкнулся с экзистенционализмом... - Е**ный Интернет! |
|
Fj_
|
Carpal Tunnel
|
|
|
|
Рег.: 12.09.2004
|
Сообщений: 8795
|
|
Рейтинг: 3287
|
|
Re: [C] static переменная в __inline функции
[re: LIfelike]
09.12.2005 01:07
|
|
|
Ну дык чувак, наверное, имеет в виду х86 архитектуру.
При программировании микропроцессоров у компилятора обычно еще штук двадцать дополнительных инструкций есть.
|
The data is the error (c)IIS FTP Server. |
|
LIfelike
|
old hand
|
|
|
|
Рег.: 27.02.2004
|
Сообщений: 765
|
Из: Б
|
Рейтинг: 0
|
|
Re: [C] static переменная в __inline функции
[re: Fj_]
09.12.2005 16:24
|
|
|
Архитектура не имеет значения, потому что register входит в стандарт, например, в последний: ISO/IEC 9899:1999, ака С99.
То есть, если компилятор под некую архитектуру поддерживает С99, то он обязан понимать storage class register. Согласно тому же стандарту, он может учитывать наличие register в декларации, либо не учитывать, на его усмотрение.
|
- Похоже, ваш сын столкнулся с экзистенционализмом... - Е**ный Интернет! |
|