|
|
  |
GCC 4.3.2 Расположение данных вр флэш памяти, компилер упорно кладёт текст в ОЗУ |
|
|
|
Nov 22 2008, 09:10
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(sonycman @ Nov 22 2008, 11:23)  Спасибо за наводку. Буду штудировать! :-) Читай между строк  Таким способом можно сильно повысить читаемость кода Код void lcd_print_str (unsigned char x, unsigned char y, char* p); // print RAM str void lcd_print_cstr (unsigned char x, unsigned char y, const char* p); // print FLASH str
#define lcd_print_PSTR(X,Y,LCDPSTR) lcd_print_cstr(X,Y,PSTR(LCDPSTR)) // put str in to FLASH and then print
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 3 2008, 10:13
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Не хотелось плодить тем, поэтому напишу прямо сюда. В общем проект создан на C++. Не пойму в чем дело, компилятор не хочет компилировать заголовки классов в h-файлах. Яр эту конструкцию кушает нормально. В чем может быть дело?
Сообщение отредактировал Vitaliy_ARM - Dec 3 2008, 10:16
Эскизы прикрепленных изображений
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 3 2008, 12:59
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(Сергей Борщ @ Dec 3 2008, 14:05)  Судя по всему он не понял слова class. Значит, он компилирует в режиме С, а не С++. Какое расширение имеет ваш файл (должен иметь .cpp)? Покажите командную строку компилятора - может там принудительно задан режим С. Расширение файла правильное - cpp. Где эту строчку можно посмотреть? На всякий случай положу майкфайл.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 3 2008, 13:27
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Vitaliy_ARM @ Dec 3 2008, 14:59)  Расширение файла правильное - cpp. Где эту строчку можно посмотреть? На прикрепленной вами картинке есть вкладка Console. Откройте ее, там же будут и более подробные сообщения об ошибке. Цитата(Vitaliy_ARM @ Dec 3 2008, 14:59)  На всякий случай положу майкфайл. Вижу в нем два С-файла: SRC = Rc6\Rc6.c SRC += Fldr\Fldr.c Вы уверены, что Trg.h не включен (возможно косвенно) в один из этих файлов? В консоли вы увидете, при компиляции какого именно файла подключился этот заголовок. Еще вижу у вас сообщение, что Эклипса не может найти генератор инфо. Зайдите в Project->Options->C/C++ Build->Discovery options и в поле Compiler invokation command впишите arm-elf-gcc.exe вместо gcc.exe. Увидите много полезного, в частности - в окне Outline P.S. Цитата(Vitaliy_ARM @ Dec 3 2008, 12:13)  Не хотелось плодить тем, поэтому напишу прямо сюда. Напрасно. Оно совсем с темой топика не коррелирует. Может кто-то из модераторов отделит это обсуждение в отдельную ветку?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Dec 3 2008, 14:03
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(Сергей Борщ @ Dec 3 2008, 16:27)  На прикрепленной вами картинке есть вкладка Console. Откройте ее, там же будут и более подробные сообщения об ошибке. Вот консоль. Код Assembling (ARM-only): crt0.S arm-elf-gcc -c -mcpu=arm7tdmi-s -I. -x assembler-with-cpp -DRAM_RUN -D__WinARM__ -D__WINARMSUBMDL_LPC2468__ -Wa,-adhlns=crt0.lst,-gdwarf-2 crt0.S -o crt0.o Compiling C: Rc6\Rc6.c arm-elf-gcc -c -mcpu=arm7tdmi-s -I. -gdwarf-2 -DRAM_RUN -D__WinARM__ -D__WINARMSUBMDL_LPC2468__ -Os -Wall -Wcast-align -Wimplicit -Wpointer-arith -Wswitch -ffunction-sections -fdata-sections -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=Rc6\Rc6.lst -ICommon/inc -Wcast-qual -MD -MP -MF .dep/Rc6.o.d -Wnested-externs -std=gnu99 -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations Rc6\Rc6.c -o Rc6\Rc6.o In file included from Rc6\/..\includes.h:30, from Rc6\Rc6.c:5: Rc6\/..\/Target\Trg.h:64: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'LPCTARGET' Rc6\/..\/Target\Trg.h:71: warning: data definition has no type or storage class Rc6\/..\/Target\Trg.h:71: warning: type defaults to 'int' in declaration of 'TARGET' Rc6\/..\/Target\Trg.h:71: warning: type defaults to 'int' in declaration of 'pTARGET' make: *** [Rc6\Rc6.o] Error 1 Цитата(Сергей Борщ @ Dec 3 2008, 16:27)  Вижу в нем два С-файла: SRC = Rc6\Rc6.c SRC += Fldr\Fldr.c Вы уверены, что Trg.h не включен (возможно косвенно) в один из этих файлов? Подключены через один глобальный файл! Этого я не знал. Всегда делал так в одном глобальном файле прописывал все инклюды и потом его уже цеплял во всех исходниках. При этом IAR игнорировал слова C++ и выдавал ошибки, если этот класс непосредственно был использован. А можно ли сделать и здесь сделать игнорирование? Цитата(Сергей Борщ @ Dec 3 2008, 16:27)  Еще вижу у вас сообщение, что Эклипса не может найти генератор инфо. Зайдите в Project->Options->C/C++ Build->Discovery options и в поле Compiler invokation command впишите arm-elf-gcc.exe вместо gcc.exe. Увидите много полезного, в частности - в окне Outline Исправил Цитата(Сергей Борщ @ Dec 3 2008, 16:27)  P.S. Напрасно. Оно совсем с темой топика не коррелирует. Может кто-то из модераторов отделит это обсуждение в отдельную ветку? Согласен, вопрос разросся.
Сообщение отредактировал Vitaliy_ARM - Dec 3 2008, 14:04
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 3 2008, 14:14
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Vitaliy_ARM @ Dec 3 2008, 16:03)  А можно ли сделать и здесь сделать игнорирование? Самый простой путь - заключить "плюсовые" определения или #include этого файла в Код #ifdef __cplusplus .... #endif Но грамотнее, конечно, включать плюсовые заголовки только в плюсовые файлы или перевести Сишные исходники на плюсы. Или попробуйте просто переименовать Rc6.c в Rc6.cpp - может он скомпилится в плюсовом режиме.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Dec 3 2008, 16:50
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(Сергей Борщ @ Dec 3 2008, 17:14)  Самый простой путь - заключить "плюсовые" определения или #include этого файла в Код #ifdef __cplusplus .... #endif Но грамотнее, конечно, включать плюсовые заголовки только в плюсовые файлы или перевести Сишные исходники на плюсы. Или попробуйте просто переименовать Rc6.c в Rc6.cpp - может он скомпилится в плюсовом режиме. В общем поменял расширение Rc6.c на cpp. Помогло. Этот вариант мне подходит. Спасибо!
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|