Официальный форум СВД Встраиваемые Системы
20 Апрель, 2024, 12:00:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: QNX 6.5 вопрос по функции assert()  (Прочитано 1787 раз)
Lipatnikov.ka
Интересующийся

Сообщений: 2


« : 24 Август, 2013, 18:54:40 »

Добрый вечер! Я недавно стал осваивать не только с/c++, но и qnx, поэтому не судите строго!
пишу в win7, momentics ide 4.7, через VMware7 подключаюсь к QNX Neutrino. Все вроде более или менее работает, НО:

не получается использовать функцию assert(), так как написано в хелпе и справочнике.
в хелпе написано использовать -l c, его дописываю в строчку "LDFLAGS+=-lang-c++ -l c"  (в случае с подключением библиотеки math мне это помогло (-l m))
примеры брал из хелпа и интернета, вот один из них:

Код:
#include <assert.h> //подключаем заголовочный файл для assert
#include <stdio.h>
using namespace std;

int main(int argc, char *argv[])
{
    printf("assert(true)\n");
    assert(0 == 0); //передаем в assert TRUE
    printf("assert(false)\n");
    assert(0 == 1); //передаем в assert FALSE
    /*Пытаемся вывести еще одну строку, но этот код не будет выполнен
    так как предыдущий assert завершил выполнение программы*/
    printf("END");
    return 0;
}



результат следующий:

Код:
assert(true)
assert(false)
END

Помогите! Пожалуйста!!!

Олег Большаков: Добавил тег [code][/code].
« Последнее редактирование: 24 Август, 2013, 19:22:06 от Олег Большаков » Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #1 : 24 Август, 2013, 19:42:51 »

Здравствуйте!

Несколько замечаний:

1. Первое слово предложения начинается с прописной буквы.
2. Не стоит осваивать C/C++, это два разных языка — C и C++. Лучше выбрать один. Если Вам интересен QNX, то стоит осваивать C.
3. -l c опция линковщика для подключения стандартной библиотеки C (libc). Обычно эта библиотека (в отличии от libm) подключается автоматически, так что опцию -l c указывать не нужно.
4. Функция assert() это инструмент разработчиков, которые уже владеют языком C, начинать осваивать язык C с этой функции не стоит.
5. Для повышения читабельности листинги лучше обрамлять тегом [code][/code].

Для полноты картины не хватает вывода компилятора и линковщика. Думаю, что там присутствует -DNDEBUG. Smiley
Записан
Lipatnikov.ka
Интересующийся

Сообщений: 2


« Ответ #2 : 24 Август, 2013, 20:17:02 »

Спасибо большое за ответ!

В выводе компилятора действительно видно строку

Код:
 C:/QNX650/host/win32/x86/usr/bin/qcc -Vgcc_ntox86 -c -Wc,-Wall  -O          -DNDEBUG   -I. 

как отключить флаг? make файлы пока я не умею писать. У меня доступны файлы Makefile и common.mk которые автоматически генерируются при создании проекта.

Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #3 : 24 Август, 2013, 21:50:50 »

Сейчас под рукой нет Momentics, отключить можно в настройках. Попробуйте для начала собрать Debug версию.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 29 Март, 2024, 01:40:31