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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальная функция, как объявить чтоб везде... 
:(
    Опции темы
Mayk
Дата 22.8.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(sim7 @ 22.8.2005, 21:27)
не можешь дать мне ссылку на более-менее понятную литературу по этому делу?

http://forum.vingrad.ru/index.php?showtopic=33456
http://www.ozon.ru/?partner=vingrad
msdn.com
Цитата(sim7 @ 22.8.2005, 21:27)
ты не ответил на вопросы о static и inline.

Ах, да, точно. Если ф-ция объявлена как инлайн, то заместо ей вызова будет ее тело. Грубо говоря вот такого вот кота:
Код

inline void helloworld(int j)
{
   printf("hello world #%d\n",j);
}

int a()
{
   helloworld(very_horrible_expression); 
   normalFunction();
}

Компилятор переделает в нечто типа
Код

int a()
{
    //заместо helloworld(...)
    int helloworld_j=very_horrible_expression;
    printf("hello world #%d\n",helloworld_j);
    //далее тело a()
    normalFunction(); //вызов нормальной ф-ции
}


А если ф-ция(или переменная) объявлена как статик, то тогда она может быть вызвана только из того же объектного модуля, где определена. Для других объектных модулей она будет не видна.

Это сообщение отредактировал(а) Mayk - 22.8.2005, 18:59


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Mayk
Дата 22.8.2005, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(sim7 @ 22.8.2005, 21:27)
объясните

smile

Цитата(sim7 @ 22.8.2005, 21:27)
GetProcAddress(myDll, "myPuts");

Загрузить из библиотеки ф-цию "myPuts". Ф-ция вернет нечто близкое к void*.
Цитата(sim7 @ 22.8.2005, 21:27)
(int (*)(int))

Закастить тип загруженной ф-ции - указатель на ф-цию принимающий 1 int и возвращающей int.
Цитата(sim7 @ 22.8.2005, 21:27)
doSomethingWonderful=

Присвоить указателю значение другого указателя.

Цитата(sim7 @ 22.8.2005, 21:27)
Да, и еще: зачем еще раз объявлять функцию в твоем *.cpp-файле?

Ключевою слово extern говорит о том, что данная вещь будет объявлена позже, возможно в другом объектном файле.


Цитата(sim7 @ 22.8.2005, 21:27)
И еще: после extern обязательно должен быть тип int? А после него - обязательно скобки? Или что?

Цитата(Mayk @ 22.8.2005, 21:18)
extern int (*doSomethinhWonderful)();

Попробую пошагово объяснить.

Код
extern 

Мы просто говорим компилятору о том, что есть такая глобальная переменная.

Цитата
int (*doSomethinhWonderfull(int)

имя переменной
Цитата
int (*doSomethinhWonderfull(int)

аргументы ф-ции.
Цитата
int (*doSomethinhWonderfull(int)

возвращаемое значение ф-ции
Цитата
int (*doSomethinhWonderfull(int)

Цитата
int (*doSomethinhWonderfull[b](int)

указатель на ф-цию принимающей инт и возвращающей инт.

Это сообщение отредактировал(а) Mayk - 22.8.2005, 19:13


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 22.8.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Цитата
smile

Вот-вот. Вы же сами сказали: "я люблю обращение на 'ты'"! А теперь злитесь. Так что я буду обращаться на "вы", так проблем меньше.
Объяснения хорошие, спасибо!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Void
Дата 22.8.2005, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Mayk @ 22.8.2005, 20:57)
Если ф-ция объявлена как инлайн, то заместо ей вызова будет ее тело.

Маленькое уточнение: это только подсказка компилятору подставить тело функции. Он вправе и не делать этого. А вправе и сделать без прямого указания в виде inline.
Но одно стабильно - inline функции, так же как static, имеют internal linkage, то есть не видны вне данной единицы трансляции.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Hroft
Дата 23.8.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



Этот топик в юмор бы надо... smile
Стыдно должно стать, sim7, на такие вопросы можно найти ответы в начале любой книги по С++. По-моему, Страуструп "The C++ PL" маст хев и бест чойс в одном.
ЗЫ: sim7, а что, обращение "объясните" теперь уже считается обращением на ты?
PM MAIL ICQ   Вверх
mr.Anderson
Дата 23.8.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Пардон, этого я и не заметил. Вот видите, привычка. Ну привык я обращаться на вы. Не понимаю, что тут такого неприятного...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.