crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
RazrFalcon
  опции профиля:
сообщение 27.3.2011, 6:22
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


.cpp
#include <QtCore/QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    return a.exec();
}

void my_func()
{
    //some thing
}
.h
#ifndef MAIN_H
#define MAIN_H

void my_func ();

#endif // MAIN_H


Это правильный способ или нет?
А то я давно так не делал, но вроде работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.3.2011, 15:42
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


так правильнее

extern void my_func ();


чтобы заголовочник можно было использовать ещё в другом cpp

А ещё более правильно - класс сделать и туда статическую функцию сунуть
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.3.2011, 19:14
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Хм...
А #include <main.h> я забыл прописать, а оно сработало, как так?

>>чтобы заголовочник можно было использовать ещё в другом cpp
в другом - это как?

>>А ещё более правильно - класс сделать и туда статическую функцию сунуть
Класс с одной функцией?
типа:
class my
{
    static void my_func ();
};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.3.2011, 19:51
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(RazrFalcon @ 27.3.2011, 22:14) *
А #include <main.h> я забыл прописать, а оно сработало, как так?
а в коде нет ничего, что было бы нужно из main.h

Цитата(RazrFalcon @ 27.3.2011, 22:14) *
в другом - это как?
в ещё одном cpp-файле, который используется в проекте. Реальный проект ведь состоит из множества h/cpp- файлов

Цитата(Алексей1153 @ 27.3.2011, 18:42) *
А ещё более правильно - класс сделать и туда статическую функцию сунуть
а это может быть излишним, это от конкретного проекта зависит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.3.2011, 19:57
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(Litkevich Yuriy @ 27.3.2011, 19:51) *
Цитата(RazrFalcon @ 27.3.2011, 22:14) *
в другом - это как?
в ещё одном cpp-файле, который используется в проекте. Реальный проект ведь состоит из множества h/cpp- файлов

Это я понял, разве не достаточно прописать нужный хедер в include? Обязательно ли писать extern перед функцией?
PS: ясное дело что не из одного cpp проекты состоят ;)

Сообщение отредактировал RazrFalcon - 27.3.2011, 19:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 27.3.2011, 21:44
Сообщение #6


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Алексей1153 @ 27.3.2011, 18:42) *
А ещё более правильно - класс сделать и туда статическую функцию сунуть

а вот это как сказать... если планируется использование в качестве библиотеки и т.п., то тут есть минус в том, что при экспорте будет геморрой и потенциальная несовместимость между компиляторами. иногда логичнее оставить функцию снаружи. ну, можно ещё объявить пространство имён, чтобы не засорять глобальное пространство.
Цитата(RazrFalcon @ 27.3.2011, 22:57) *
Обязательно ли писать extern перед функцией?

extern означает, что функция в другом модуле. обычно компилятор сам видит линки внутри проекта. но если это подключение статической библиотеки или взаимодействие с кодом на С, то это обязательно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.3.2011, 7:52
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Iron Bug @ 27.3.2011, 23:44) *
ну, можно ещё объявить пространство имён, чтобы не засорять глобальное пространство.

ну да, можно и пространством обойтись. Тоже не люблю замусоривание )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 18.3.2025, 1:58