Форум программистов, компьютерный форум, киберфорум
Наши страницы

printf sprintf не понятно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ время жизни временного объекта http://www.cyberforum.ru/cpp-beginners/thread949767.html
можно ли передать временный объект в функцию по ссылке? void f1(int & ); ..... int main() { f1(int());
C++ Ошибка в задаче про банкомат (снова работа со строками) Ещё одна задача - на этот раз про банкомат, где надо использовать конструкцию map. Задача состоит в том, что надо вывести ответ на каждую из операций, запрашиваемых у банкомата. Программу я написала... http://www.cyberforum.ru/cpp-beginners/thread949750.html
Метод сортировки "пузырьком" C++
Написать программу которая реализует метод сортировки "пузырьком". Сгенерировать три массива 100, 1.000 и 10.000 элементов типа integer соответственно. Отсортировать полученные массивы по...
C++ Метод сортировки Шелла
Написать программу которая реализует метод сортировки Шелла. Сгенерировать три массива 100, 1.000 и 10.000 элементов типа integer соответственно. Отсортировать полученные массивы по возростанию...
C++ Справка C++ http://www.cyberforum.ru/cpp-beginners/thread949735.html
Есть ли хорший русскоязычный справочик C++? Я тут нашол одну электронную версию- вставил ignore нет его вставил :: ну забыл я- нет и его.. С нормальной справкой было бы куда легче и учить разбирая...
C++ Проектирование сервиса Добрыть день! Сразу оговорюсь: не смог найти подходящую ветку форума, модераторов просьба помочь. О самой задаче: Требуется сделать сервис наподобие ДубльГИСа, только для одного конкретного здания,... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
07.09.2013, 19:53
Цитата Сообщение от karaulov6 Посмотреть сообщение
Даже если в переменную занести, то только со второго раза срабатывает.
Занесение в переменную никак на результат повлиять не должно. Я предложил это лишь для того, чтобы посмотреть возвращаемое значение функции, но ты потом скрин с отладкой выложил.

Скачал я исходники, там эта функция account_get_strattr ведёт к цепочке вызовов других функций, при этом в случае ошибки какого-либо вызова возвращается NULL. Одна из функций в цепочке — функция attrgroup_find_attr, и в ней есть такой любопытный код:

C
1
2
/* trigger loading of attributes if not loaded already */
if (attrgroup_load(attrgroup)) return NULL; /* eventlog happens earlier */
Т.е. здесь выполняется загрузка атрибутов, если они ещё не загружены. При этом в случае ошибки возвращается NULL.

Смотрим attrgroup_load:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
extern int attrgroup_load(t_attrgroup *attrgroup)
{
    assert(attrgroup);
    assert(attrgroup->storage);
 
    if (FLAG_ISSET(attrgroup->flags, ATTRGROUP_FLAG_LOADED))    /* already done */
    return 0;
    if (FLAG_ISSET(attrgroup->flags, ATTRGROUP_FLAG_DIRTY)) { /* if not loaded, how dirty ? */
    eventlog(eventlog_level_error, __FUNCTION__, "can't load modified account");
    return -1;
    }
 
    attrgroup_set_loaded(attrgroup);
    if (storage->read_attrs(attrgroup->storage, _cb_load_attr, attrgroup)) {
    eventlog(eventlog_level_error, __FUNCTION__, "got error loading attributes");
    return -1;
    }
    attrgroup_clear_dirty(attrgroup);
 
    return 0;
}
Это только моё предположение, но здесь может при первом вызове устанавливается флаг ATTRGROUP_FLAG_LOADED (строка "attrgoup_set_loaded(attrgroup);") затем в следующей строке возникает ошибка и в результате вся цепочка вызовов заканчивается возвратом NULL. При втором вызове флаг ATTRGROUP_FLAG_LOADED уже установлен, поэтому следующие операции не выполняются, и ты получаешь свой атрибут.

В общем, пройди в отладчике всю цепочку вызовов, обращая внимание на эти функции, и определи, почему при первом вызове account_get_auth_mute_reason возвращается NULL.

Добавлено через 2 минуты
Кстати, в функциях есть логирование, попробуй его включить.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru