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