НавигацияВход для пользователейМетки20 лет
25 лет
9860
add-ins
Atmega16
Casio
casio 9860
CITIZEN
COM-порт
FA-124
Geany
hello world
HP
HP-48
HP-50
HP 50g
IDE
iOS
mk.exe
mk161 for dummies
mkl2mkp
SPI
TI-89 Titanium
Андроид
Анонсы
Дополнительные вопросы по SPI-интерфейсу.
Игры
Импульсная характеристика
История
Итоги
КЭИ
Комбинаторика
Комплексные числа
Конкурсы
Криптография
Куплю БРП Москва
Лунолёты
МК-52
МК-161
Математика
Мысли
ПМК
ПО
Поломка
Пробел в знаниях
Программные метки в МК-1хх
Программы
Прогрессия
Простые числа
Разложение
Регламент
Секундомер
Сервис
События
Справочник В.П. Дьяконова
Справочное пособие
Стыковка
Факторизация
Физика
Фото
ЭКВМ
Юмор
ЯВУ
браузер
версия
внешний модуль
гибкий
гипербола
градиент
дети
дивергенция
калькулятор
книги
компилятор
кривые второго порядка
матрицы
методичка
мк-61
парабола
подзатыльник
практическое руководство
преобразоване координат
программируемый
производная n-го порядка
производная по направлению
прошивка
ротор
рынок
ряд Фурье
справочник
среда разработки
текст
учебник
цветы жизни
цифровая обработка сигналов
частная производная
числовой ряд
читалка
шахматы
эллипс
Новости других сайтов
|
HP GCC и C++![]() Пакет HPGCC для разработки программ под ПМК серии HP-48/49/50 на языке Си может также с небольшими изменениями настроек использоваться для программирования на C++. Вначале необходимо скачать и установить пакет для разработки (http://sourceforge.net/projects/hpgcc/). В него входят компиляторы GNU, библиотеки, заголовочные файлы, исходники и собственно простая среда разработки на базе Programmer Notepad. Качаем здесь: Windows, Linux. Предположим, вы установили пакет в каталог C:\HPGCC. В корне лежит файл "Default_Makefile". Сделаем его резервную копию, затем запустим нашу среду (Start -> HPGCC 2.0 for Windows -> HPGCC Programmer's Notepad) и откроем в ней Default_Makefile-файл. Делаем замену ".c" на ".cpp", а к опциям компилятора (строка 66, ARM_ELF_CFLAGS=...) добавляем "-fno-rtti -fno-exceptions" и сохраняем. Создаем в среде новый файл, скопируем в него текст из примера "Hello, world!" (examples\hiworld.c). Сделаем небольшие изменения: обернем include главного заголовочного файла. #ifdef __cplusplus
#define size_t long unsigned int
extern "C" {
#endif
#include <hpgcc49.h> // the standard HP lib
#ifdef __cplusplus
}
#endifРазумеется, есть способы поэлегантнее, например, внести эту обвязку в отдельный заголовочный файл вроде hpcpp.h, включая его в свои исходники. В рамках нашего обзора это не столь уж и важно. Сохраняем файл под именем, например, hello2.cpp и жмем Ctrl+F7. Компиляция и сборка проходят успешно. Теперь проверим "сиплюсплюснутость" :) Добавим перед основной функцией простенький класс. class MyClass
{
public:
MyClass() {}
void SayHello() { printf("Hello, World!"); }
};Однако, попытка компоновки вызывает ошибку: не определены основные операторы работы с памятью в Си++: new и delete. Это понятно, т.к. компоновать нужно с С++-библиотеками типа libsupc++.a или libstdc++.a. Первая из них доступна на том же сайте HPGCC, но пока не входит в пакет и является неофициальной. Тем не менее, разработчики подсказывают, что если просто руками добавить соответствующие операторы, то выделение памяти будет работать и в существующем пакете. Добавляем операторы перед нашим классом. Полный текст программы будет выглядеть так.
#define TINY_PRINTF
#ifdef __cplusplus
#define size_t long unsigned int
extern "C" {
#endif
#include <hpgcc49.h> // the standard HP lib
#ifdef __cplusplus
}
#endif
void * operator new(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
void * operator new[](size_t size)
{
void *ptr = malloc(size);
return ptr;
}
void operator delete(void *p)
{
free(p);
}
class MyClass
{
public:
MyClass() {}
void SayHello() {printf("Hello, World!");}
};
int main(void)
{
clear_screen();
MyClass *hello = new MyClass();
hello->SayHello();
WAIT_CANCEL; // loop until ON pressed
delete hello;
}
После компиляции и компоновки в каталоге исходного файла должен появиться "hello2.hp" для выполнения на конечном устройстве. Если физического устройства нет, можно воспользоваться мощным эмулятором ПМК серии HP-48/49/50 под названием Debug4x, детально показывающим даже внешний вид калькулятора. Его можно загрузить на сайте разработчиков (англ.яз.): http://www.debug4x.com. Эмулятор, кстати, написан на Delphi.
Интересно. Еще не пробовал на своем 50g? Автор: Vitasam
Да Автор: Serguei_Tarassov
6 Кб за Hello World - ну, терпимо :) Автор: Vitasam
Без printf Автор: Serguei_Tarassov
Ждём. Автор: AtH
Пусть Автор: Serguei_Tarassov
Тогда какой смысл? Автор: AtH
Вроде бы Автор: Serguei_Tarassov
Спасибо. Автор: AtH
Чтобы регулярно делать описания Автор: Serguei_Tarassov
HP-48/49/50 поддерживает уникод? Чтобы по-русски Автор: Vitasam
ASCII Автор: Serguei_Tarassov
Нет Автор: AtH
сайт hpgcc.org Автор: Alex (не проверено)
Меcто на SF Автор: Serguei_Tarassov
Так там только Автор: Alexav1000
Разве? Автор: Serguei_Tarassov
|