Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=3809801&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 09:28:47 2016
Кодировка: Windows-1251
[C] static переменная в __inline функции - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
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 точно не помню.
Другое дело, что может больше и смысла нет его использовать.



надежный винтик
Anonymous
Незарегистрирован
(172.16.33.112)

  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 в декларации, либо не учитывать, на его усмотрение.



- Похоже, ваш сын столкнулся с экзистенционализмом...
- Е**ный Интернет!
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в