
Gradi
21.11.2017
20:03:27
Вот есть так называемые INCLUDE GUARD'Ы задача которых сделать так, чтобы заголовочный файл включался только один раз в исходник. Так вот вопрос. Можно ли в абсолютно каждый заголовочный файл пихать гуарды или есть ситуации, когда они вредят?

Scarf
21.11.2017
20:03:32
А потом AMD выкатили x86_64...

Alex Фэils?︙
21.11.2017
20:04:21

Google

Alejandro
21.11.2017
20:04:29

Gradi
21.11.2017
20:04:51

Scarf
21.11.2017
20:04:59

Gradi
21.11.2017
20:05:38

Scarf
21.11.2017
20:06:09
Один из заголовков не включится
С pragma такого не должно быть

Gradi
21.11.2017
20:07:16

Alejandro
21.11.2017
20:07:48

Stas'M
21.11.2017
20:08:04
Ну это я уже понял)

Scarf
21.11.2017
20:08:10
Вот классический include guard:
#ifndef H_GRANDFATHER
#define H_GRANDFATHER
struct foo {
int member;
};
#endif

Stas'M
21.11.2017
20:09:09

Google

Scarf
21.11.2017
20:09:29
Вот если будет еще один файл с H_GRANDFATHER, он не включится
Потому лучше пользоваться #pragma once

Alejandro
21.11.2017
20:11:52
И мануал нужно в английской вики смотреть
Я в русской не проверял

Gradi
21.11.2017
20:13:31
Вот если будет еще один файл с H_GRANDFATHER, он не включится
1. Т.е. если у нас есть два файла с одинаковым именем, но в разных папках, то при их включении
#include <abs/foo.h>
#include <zzz/foo.h>
таким образом гуарды в них момешают включить второй?
2. Что если использовать имя файла + какой-нибудь случайный хеш?
3. #pragma once защитит от ситуации 1?
4. gcc, g++, clang поддерживают pragma once? Просто насколько помню, это была чисто фича компилятора от майкрософта.

Scarf
21.11.2017
20:14:12
1 Да
2 Ничего не мешает, кроме неудобства
3 Да
4 Да

Gradi
21.11.2017
20:15:39

Scarf
21.11.2017
20:16:40

Gradi
21.11.2017
20:38:10
Хорошо. Более менее понял. Второй вопрос.
Как правильно обрабатывать ошибки в с?
К примеру.
void test()
{
char *buffer;
buffer = malloc(...);
if (buffer == NULL)
{
// Ошибка, должны как-то сообщить
// допустим вернуть код ошибки
}
char *results = processBuffer(buffer);
if (results == NULL)
{
// Ошибка при работе с буфером
// Для начала должны удалить ранее выделенный
free(buffer);
// И опять что-то сообщить
// желательно чтобы мы могли отличить
// что ошибка произошла при работе с буфером
}
// И так далее
}
Т.е чем дальше в лес, тем больше нам надо будет подчищать и код будет увеличиваться в размерах и становиться не читаемым.

Stas'M
21.11.2017
20:41:20
Функции в помощь
Вообще всё надо абстрагировать, тогда не запутаешься

Digital
21.11.2017
21:00:17
if (!NT_SUCCESS(errCode))
там так

Scarf
21.11.2017
21:01:34
Это проверка на ошибку
@jeditobe @AlexFails

Максим
21.11.2017
21:02:22

Digital
21.11.2017
21:02:22
if (!NT_SUCCESS(errCode))
{
TRACE("Status 0x%08x obtaining FileStandardInformation for source\n", errCode);
BaseSetLastNTError(errCode);

Краб ходит E7
21.11.2017
21:02:36
Мы не занимаемся вебом. И reactjs никак к нам не относится.

Google

Scarf
21.11.2017
21:03:06

Digital
21.11.2017
21:03:24

Краб ходит E7
21.11.2017
21:03:45

Digital
21.11.2017
21:06:05
порежут тебя зожом и библией добъют

Краб ходит E7
21.11.2017
21:07:38
Ты её видел? Свяжу её, поморю голодом пару дней, потом разведу около неё костёр, и... >:-)
... и буду жарить шашлык. ^__^

Digital
21.11.2017
21:08:23
хотя использование плоти и крови для кормления спортсменов может и даст результат
и опятьже кто проиграет того на крест и готов источник плоти и крови
я изобрёл православный зож

Alex Фэils?︙
21.11.2017
21:18:53
Она вышла

Digital
21.11.2017
21:24:29

Alex
21.11.2017
21:30:29
да что ж это за боты такие
научились ставить биографию, находить себе имя

Alex
21.11.2017
21:30:35
ставить много аватарок
но почему они не научились брать аватарки с разрым разрешением

Scarf
21.11.2017
21:34:09
(и у тебя они тоже одинаковые)

Alex
21.11.2017
21:37:44
а...

Alejandro
22.11.2017
14:39:13
Чего молчим?

Alex Фэils?︙
22.11.2017
14:39:35
Сплю

Stas'M
22.11.2017
14:39:41
Делом заняты, баги репортим

Google

Alejandro
22.11.2017
14:40:21
Галят написал мне:
Новое - это забытое старое )
https://github.com/reactos/reactos-deprecated-gitsvn-dont-use/pull/30

Stas'M
22.11.2017
14:40:51
Хе) Ну всё верно, он мне тоже писал, что ещё не завершил работу над USBOHCI

Admin
ERROR: S client not available

Stas'M
22.11.2017
15:09:35
Эх... всё это ещё придётся синхронить с новой репой

Alejandro
22.11.2017
15:17:15
И там конца края нет исправлениям

Stas'M
22.11.2017
15:19:39
Молитесь, чтобы Вадим не бросил это дело ?

Alejandro
22.11.2017
15:23:06
?
Лучше скинуть ему бабла
Чем молится

Stas'M
22.11.2017
15:23:59
Если скинуть, то есть риск, что без дальнейшей подпитки перестанет заниматься

Alejandro
22.11.2017
15:23:59
На баунтисорс можно денежку поместить например

Stas'M
22.11.2017
15:24:06
А так на энтузиазме)

Alejandro
22.11.2017
15:24:35
Через баунтисорс есть гарантия, что деньги он получит только по результату )

Stas'M
22.11.2017
15:24:54
Хе, хитро ?

Alejandro
22.11.2017
15:25:05
У него были финансовые проблемы, кстати
Так что денежка ему не помешает лишняя
Т9 подводит

Stas'M
22.11.2017
15:26:26
Альтруистичный Т9 ?
Так-с, отлично, багрепорта по WinPcap ещё не было

Google

Alejandro
22.11.2017
15:53:27
?
Он щас пилит за зарплату значительно ниже рыночной
Но его фронт работ имеет принципиально важное значение, так что дополнительный финансовый стимул лишним не будет

Digital
23.11.2017
03:10:34
https://habrahabr.ru/post/342992/

Andre
23.11.2017
03:32:23
https://geektimes.ru/post/295685/?utm_source=telegram

Stas'M
23.11.2017
11:45:45
Угу
Пьер сказал, что по всей видимости, нужно chkdsk дорабатывать, ибо дров не принимает битую ФС
Один шаг для человека, огромный скачок для человечества

Максим
23.11.2017
11:52:58
привет из прошлого =)

Краб ходит E7
23.11.2017
11:54:22