Вопросы и ответы по программированию.

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#181 Сообщение 11.01.2012, 20:58

Код: Выделить всё

double dist, sqrt(double);
есть ли здесь какой-либо более глубокий смысл, чем "ещё раз напомнить что sqrt возвращает число типа double" ?[/offtop]
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#182 Сообщение 11.01.2012, 21:07

nikit-xxx
А что это?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#183 Сообщение 11.01.2012, 21:14

фрагмент из K&R, "6.1. Основы работы со структурами"
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#184 Сообщение 11.01.2012, 22:08

Код: Выделить всё

double dist, sqrt(double);
==

Код: Выделить всё

double dist;
double sqrt(double);
Объявляется переменная dist типа double, затем прототип функции sqrt, принимающей и возвращающей double.
Таким образом можно не подключать "math.h", потому как этот прототип соответствует тому, что находится в данном заголовочном файле.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#185 Сообщение 12.01.2012, 04:21

спасибо, раньше не знал.
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#186 Сообщение 14.01.2012, 19:16

Собственно возник ещё вопрос, в каких случаях лучше объявить стандартную библиотечную функцию, записав её прототип;
и в каких случаях лучше при помощи заголовочного файла?

Где об этом можно почитать? нашёл http://ru.wikipedia.org/wiki/Заголовочный_файл
Последний раз редактировалось nikit-xxx 14.01.2012, 19:24, всего редактировалось 1 раз.
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#187 Сообщение 14.01.2012, 19:19

nikit-xxx
Лучше всегда подключать заголовочный файл.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
GanGSISoft
Полковник
Полковник
Сообщения: 1430
Зарегистрирован: 27.03.2008
Откуда: Бацькаўшчына
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

#188 Сообщение 27.01.2012, 16:25

Часто в названиях констант или в функций в C/C++ встречается два или одно подчёркивание, что это значит?

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#189 Сообщение 27.01.2012, 16:36

не знаю как в C/C++, в Python так принято обозначать объекты предназначенные для внутреннего использования (_ считается protected, __ - private)

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#190 Сообщение 27.01.2012, 17:10

GanGSISoft
Называется "Reserved for Implementation Use", если не ошибаюсь. Функции с подчёркиваниями обычно не используются напрямую, а вызываются каким-либо образом одноимёнными функциями без подчёркивания.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
GanGSISoft
Полковник
Полковник
Сообщения: 1430
Зарегистрирован: 27.03.2008
Откуда: Бацькаўшчына
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

#191 Сообщение 28.01.2012, 11:58

NiGHt-LEshiY
А какая разница между одним или двумя подчёркиваниями?
И к константам тоже относится?
Почему ifdef WIN32 а ifdef __unix?

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#192 Сообщение 28.01.2012, 12:01

GanGSISoft
Какая-то разница может и есть. Например, с двумя подчёркиваниями определяется на высшем уровне (unix, posix), а с одним - в локальных либах. Это предположение.

Код: Выделить всё

echo | gcc -dM -E -
Так посмотришь предопределённые макросы. Там достаточно макросов и с одним подчёркиванием и с двумя.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
GanGSISoft
Полковник
Полковник
Сообщения: 1430
Зарегистрирован: 27.03.2008
Откуда: Бацькаўшчына
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

#193 Сообщение 04.03.2012, 19:10

В codeblocks с gcc если я из cpp файла обращаюсь к функции которая описана в с файле то при линковке получаю ошибку "undefined reference to `itoa(long)'" а если обращение заключить в #ifdef #endif то линкуется нормально. Как это полечить?

Добавлено спустя 2 минуты 46 секунд:
Делаю игру для себя, писал без использования классов, но решил сделать с классами(а то C++ уже забыл), да и удобнее в моём случае. Вот только как следует сделать, обсолютно всё перевести на классы, даже самые мелочи(как в Java), или классами сделать только крупные объекты?

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#194 Сообщение 04.03.2012, 19:22

В codeblocks с gcc если я из cpp файла обращаюсь к функции которая описана в с файле то при линковке получаю ошибку "undefined reference to `itoa(long)'" а если обращение заключить в #ifdef #endif то линкуется нормально. Как это полечить?
ээм.. что?

Добавлено спустя 26 секунд:
А, понял. extern "C". google it.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
GanGSISoft
Полковник
Полковник
Сообщения: 1430
Зарегистрирован: 27.03.2008
Откуда: Бацькаўшчына
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

#195 Сообщение 06.03.2012, 23:19

NiGHt-LEshiY, спасибо.

Можно в gtk заставить выполняться функцию guis_pressing_key при нажатии клавиши
g_signal_connect(GTK_OBJECT(window), "key_press_event", G_CALLBACK(guis_pressing_key), this);
Но не получается сделать так, если функция guis_pressing_key является членом класса(не компилируется), как это сделать?

Добавлено спустя 47 минут 46 секунд:
И ещё одна не решимая проблема, если я из класса A вызываю метод класса B который вызывает метод класса A то если этот метод обращается к переменным класса то программа падает.

Ответить Вложения 1