Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 210
от 12.03.2003, 20:00

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 621
Отправлено ответов: 1395
Активность: 224.6 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

D1g174LM4n14c
Статус: Начальный
Общий рейтинг: 120
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 113.54
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 107.95
[Подробней >>]
 
Jadd
Статус: Профессиональный
Общий рейтинг: 141.35
[Подробней >>]
Ramzes
Статус: Опытный
Общий рейтинг: 136.47
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 614. Здравствуйте эксперты. Что означает ключевое слово extern при обьявлении ф-ии? Пример: extern void f... (ответов: 4)
Вопрос № 615. Приветсвую. Подскажите как в win-приложении получить параметр запуска исполняемого файла из консоли?... (ответов: 3)

Вопросов: 2, ответов: 7


 Вопрос № 614

Здравствуйте эксперты.
Что означает ключевое слово extern при обьявлении ф-ии?
Пример:
extern void f(void); // ?
Что означает ключевое слово static при обьявлении ф-ии?
Пример:
static void f(void); // ?



Вопрос отправлен: 08.03.2003, 20:31
Отправитель: kuper

[Следующий вопрос >>] [Список вопросов]

Отвечает D1g174LM4n14c

Доброе время суток, kuper!
extern означает что определение функции (или объекта) находится в другом файле, а данное описание только вводит имя в область видимости. Пример:
// file1.cpp
void f()
{
/* ... */
}
// file2.cpp
extern void f();
f();
//////////////////////////////////
Функция определенная как static становится локальной в области видимости файла.
Подробнее читайте в справочниках, руководствах, книгах, стандартах и т.д. :))
Удачи!

Ответ отправлен: 08.03.2003, 21:47
Отправитель: D1g174LM4n14c


Отвечает baldr

Приветствую Вас, kuper!
1. extern - это означает, что текст функции в данном файле отсутствует, как и во всех
присоединяемых через #include файлах. А должен он быть в уже скомпилированном виде и
собираться при линковании из одного из файлов, включаемых в проект. Например, есть у тебя
lib-файл - ты его и подключаешь к проекту, а в h-файле пишешь прототипы нужных функций
с директивой extern.
2. Объект, описанный со спецификатором static, будет существовать в пределах того файла
с исходным текстом программы (модуля), в котором он определен.


Ответ отправлен: 09.03.2003, 00:36
Отправитель: baldr


Отвечает vitya

Здравствуйте, kuper!
слово extern при объявлении означает, что тело данной функции или объявление переменной находится в другом obj файле, который будет линковаться с нанным obj file-ом.
Например: у тебя есть 2 файлa a.cpp и b.cpp.
В a.cpp объявлена main() и extern void f(int);
a в b.cpp объявленная и реализована void f(int i).
Теперь, если сказать линкеру, что b.obj тоже должен сликоваться с нашим файлом, то в результате ты сможешь вызывать эту функцию.
Слово static применительно к функциям я вижу только в классах. Это означает, что данная функция член класса имеет право обращаться лишь к статическим переменным класса. Кроме того ее можно вызывать не создавая экземпляр класса. CMyClass::StaticFunc(i);


Ответ отправлен: 09.03.2003, 11:35
Отправитель: vitya


Отвечает Jadd

Здравствуйте, kuper!
Ты еще спроси "Что означает void внутри скобок при объявлении функции":).
Читай хелп или литературу по програзму на С/С++. Это же прописные истины.

Ответ отправлен: 11.03.2003, 17:43
Отправитель: Jadd


 Вопрос № 615

Приветсвую.
Подскажите как в win-приложении получить параметр запуска исполняемого файла из консоли? На пример: myprog.exe -h и т.д.


Приложение:


Вопрос отправлен: 09.03.2003, 19:16
Отправитель: YAR

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Приветствую Вас, YAR!
int main(int argc, char** argv)
{
cout << "кол-во аргументов - " << argc << endl;
for( int i = 0; i < argc; i++ )
cout << "arg[" << i << "] = " << argv[i] << endl;
}

Ответ отправлен: 10.03.2003, 12:25
Отправитель: Ramzes


Отвечает D1g174LM4n14c

Здраствуйте, YAR!
Нужная вам строка находится там, куда указывает 3-й параметр функции WinMain - LPSTR lpCmdLine ;)
Если используется функция main, тогда ее нужно описать так: int main(int agrc, char* agrv[]) где
agrc - кол-во параметров переданных из коммандной сроки
agrv[] - массив содержащий эти параметры
Удачи!

Ответ отправлен: 09.03.2003, 21:18
Отправитель: D1g174LM4n14c


Отвечает Jadd

Здравствуйте, YAR!
Вообще в WinApi есть функция GetCommandLine. Можно и через argv/argc. Можно и через lpCmdLine в WinMain. Тебе решать - способов масса.

Ответ отправлен: 11.03.2003, 18:57
Отправитель: Jadd



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (34)
C / C++ (28)
Perl (6)
Delphi (14)
Pascal (19)
Basic / VBA (11)
Java / JavaScript (10)
PHP (7)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (25)
"Железо" (29)
Поиск информации (14)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (13)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное