Страница 1 из 2
-
Что делать? Все время эта ерунда((((
Arduino: 1.6.4 (Windows 7), Плата»Arduino Nano, ATmega328″
In file included from threeservos.ino:10:0:
C:UsersАнтонDesktoparduinoarduino-1.6.4hardwarearduinoavrcoresarduino/Arduino.h:117:14: error: conflicting declaration ‘typedef bool boolean’
typedef bool boolean;
^
In file included from threeservos.ino:3:0:
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2/ServoTimer2.h:76:17: error: ‘boolean’ has a previous declaration as ‘typedef uint8_t boolean’
typedef uint8_t boolean;
^
Ошибка компиляции.Это сообщение будет содержать больше информации чем
«Отображать вывод во время компиляции»
включено в Файл > Настройки -
в строке 3 попытка объявить переменную, которая уже была объявлена ранее.
В строке 10 несоответствие типа переменной ее содержимому. -
Это пример из библиотеки я его не правил даже…… Получается изначально в библиотеках ошибки? библиотеки разные качал-все равно это
-
значит что-то в коде конфликтует с этими строками.
-
код примитивный из примера…..((((((( пример не компилируется даже ….. А Вы не могли бы проверить библиотеку у себя? хотябы пример из нее скомпилировать… хоть определился бы у меня такая засада или библиотеки такие…. буду очень благодарен а то незнаю что делать уже вот ссылка https://cloud.mail.ru/public/9EBN/1rKZeCfRD
-
компилируется без ошибок.
Попробуй установить Arduino IDE заново, либо в другую папку. -
спасибо хоть какое то направление появилось))) А версия IDE Какая у Вас?
-
Неа.
conflicting declaration ‘typedef bool boolean’ — конфликт объявления типа boolean.
‘boolean’ has a previous declaration as ‘typedef uint8_t boolean’ — тип boolean ранее объявлен как uint8_t.
То есть тип дважды объявлен, да еще и по-разному.Найдите в ServoTimer2.h строчку «typedef uint8_t boolean» и закомментируйте ее, а в начале файла добавьте #include <Arduino.h>.
Что оно теперь говорит? -
говорит
Arduino: 1.6.4 (Windows 7), Плата»Arduino Leonardo»
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp: In function ‘void TIMER2_OVF_vect()’:
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:29:2: error: ‘TCNT2’ was not declared in this scope
TCNT2 = servos[Channel].remainder; // yes, set count for overflow after remainder ticks
^
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:39:2: error: ‘TCNT2’ was not declared in this scope
TCNT2 = 0; // reset the clock counter register
^
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp: In function ‘void initISR()’:
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:125:2: error: ‘TCCR2A’ was not declared in this scope
TCCR2A = 0; // normal counting mode
^
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:126:2: error: ‘TCCR2B’ was not declared in this scope
TCCR2B = _BV(CS21); // set prescaler of 8
^
In file included from c:usersантонdesktoparduinoarduino-1.6.4hardwaretoolsavravrincludeavrio.h:99:0,
from c:usersантонdesktoparduinoarduino-1.6.4hardwaretoolsavravrincludeavrinterrupt.h:38,
from C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:5:
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:126:15: error: ‘CS21’ was not declared in this scope
TCCR2B = _BV(CS21); // set prescaler of 8
^
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:127:2: error: ‘TCNT2’ was not declared in this scope
TCNT2 = 0; // clear the timer2 count
^
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:128:2: error: ‘TIFR2’ was not declared in this scope
TIFR2 = _BV(TOV2); // clear pending interrupts;
^
In file included from c:usersантонdesktoparduinoarduino-1.6.4hardwaretoolsavravrincludeavrio.h:99:0,
from c:usersантонdesktoparduinoarduino-1.6.4hardwaretoolsavravrincludeavrinterrupt.h:38,
from C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:5:
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2ServoTimer2.cpp:128:14: error: ‘TOV2’ was not declared in this scope
TIFR2 = _BV(TOV2); // clear pending interrupts;
^
Ошибка компиляции.Это сообщение будет содержать больше информации чем
«Отображать вывод во время компиляции»
включено в Файл > Настройки -
В ServoTimer2.cpp добавьте
#include <avr/interrupt.h>
#include <Arduino.h>,
а в ServoTimer2.h вместо #include <Arduino.h> пусть будет #include <inttypes.h> — это по аналогии с библиотекой Servo.h.
У меня библиотеки ServoTimer2 нет и IDE 1.0.5 стоит, так что сам попробовать не могу, могу только догадки высказывать. -
В ServoTimer2.cpp
/* ServoTimer2.cpp*/
extern «C» {
// AVR LibC Includes
#include <inttypes.h>
#include <avr/interrupt.h>
}
#include <Arduino.h>
#include «ServoTimer2.h»
static void initISR();вроде и то и другое есть
-
В ServoTimer.h внес как Вы сказали а в cpp там вроде то что Вы сказали уже есть… теперь выдает
Arduino: 1.6.4 (Windows 7), Плата»Arduino Leonardo»
In file included from ServoTimer2.pde:3:0:
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2/ServoTimer2.h:74:2: error: ‘boolean’ does not name a type
boolean attached(); // return true if this servo is attached
^
C:UsersАнтонDesktoparduinoarduino-1.6.4librariesServoTimer2/ServoTimer2.h:94:2: error: ‘boolean’ does not name a type
boolean attached(int); // return true if the servo on the given channel is attached
^
Ошибка компиляции.Это сообщение будет содержать больше информации чем
«Отображать вывод во время компиляции»
включено в Файл > Настройки -
Откуда качали библиотеку ServoTimer2? Дайте ссылку или тут к сообщению прицепите. Сейчас качну IDE 1.6.4, попробую поковырять.
-
https://cloud.mail.ru/public/9EBN/1rKZeCfRD я уже несколько вариантов качал-почему то мне кажется что дело в IDE и надо комп чистить……… ссылочка на последнюю ту что сейчас ставил
-
сейчас подчищу все и попробую 1.0.5 поставить
-
поставил 1.0.5 куча ошибок-незнаю что делать…………………….(((((((((((((((((((((((((
-
Попробовал, чуда не произошло. Погуглил. Нашлось несколько топиков с описанием этой проблемы, но решения нигде нет. Похоже, что эта библиотека просто не поддерживает леонардо.
Давайте попробуем копать в другую сторону. Чем не угодила штатная библиотека Servo?
-
она мне всем угодила до того момента как я не попробовал ее в одном скетче с <VirtualWire.h>…. И тут засада они конфликтуют-написано что на одних прирываниях сидят и один таймер используют(на форумах)… А мне без этой связки проект не закончить никак((((( У меня и серва должна работать и переменные идти через модули RF433… другие модули использовать немогу так как частоты 2.4 использовать нельзя-устройство будет на Wi-Fi антене сидеть(наводки будут)… засада прям уже дня 3 с форумов не вылезаю((
-
У меня даже пример из нее компилиться не захотел ни в какую.
А VirtualWire заменить чем-нибудь не вариант?
Страница 1 из 2
struct Sizes {
const int LAYERS;
const int FIRST_LAYER;
const int SECOND_LAYER;
const int THIRD_LAYER;
};
class Test
{
private:
Sizes sizes;
public:
Test(Sizes sizes_f):sizes(sizes_f) {}
};
int main()
{
std::cout<<__cplusplus<<std::endl;
Sizes sizes {3,3,2,1};
//Parser().parse();
//Neural(sizes);
Test(sizes);
}
ошибка
conflicting declaration «Test sizes»
35 | Test(sizes);
| ^~~~~
src/Main.cpp:32:8: замечание: предыдущая декларация «Sizes sizes»
32 | Sizes sizes {3,3,2,1};
| ^~~~~
Как исправит? Заранее спасибо
Ответы (2 шт):
А что вы хотите получить? По сути, вы объявили переменную sizes
типа Test
, а так как перед этим уже была объявлена переменная sizes
типа Sizes
, то…
Может, вы хотели этого:
Test{sizes};
?
→ Ссылка
Автор решения: AR Hovsepyan
Конструкторы вызываются так:
Test t = Test(sizes);
Test t(sizes);
Test{sizes};
А Test(sizes);
это или вызов функции Test или объявление Test sizes
→ Ссылка
Today, I was able to build the Blink sample one or two times, but now I get the following error:
C:toolsSmingsamplesBasic_Blink>make
Basic_Blink: Invoking 'all' for Esp8266 (debug) architecture
Building /c/tools/Sming/samples/Basic_Blink/out/Esp8266/debug/lib/clib-App-fc053ef1152a6b983c66a394c1d8a077.a
C+ /c/tools/Sming/samples/Basic_Blink/app/application.cpp
In file included from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp8266/include/mem.h:18:0,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/arch/cc.h:41,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/arch.h:43,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/debug.h:35,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/opt.h:46,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/ip_addr.h:35,
from c:/tools/sming/Sming/Arch/Esp8266/Components/esp8266/ESP8266_NONOS_SDK/include/user_interface.h:30,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp8266/include/esp_systemapi.h:47,
from c:/tools/Sming/Sming/Arch/Esp8266/System/include/user_config.h:7,
from c:/tools/Sming/Sming/System/include/gdb/gdb_hooks.h:22,
from c:/tools/Sming/Sming/Core/SmingCore.h:15,
from c:/tools/Sming/samples/Basic_Blink/app/application.cpp:1:
c:/tools/sming/Sming/Arch/Esp8266/Components/esp8266/ESP8266_NONOS_SDK/include/mem.h:42:60: error: conflicting declaration of C function 'void* pvPortMalloc(size_t, const char*, unsigned int, bool)'
void *pvPortMalloc (size_t sz, const char *, unsigned, bool);
^
In file included from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/arch/cc.h:41:0,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/arch.h:43,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/debug.h:35,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/opt.h:46,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp-open-lwip/esp-open-lwip/include/lwip/ip_addr.h:35,
from c:/tools/sming/Sming/Arch/Esp8266/Components/esp8266/ESP8266_NONOS_SDK/include/user_interface.h:30,
from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp8266/include/esp_systemapi.h:47,
from c:/tools/Sming/Sming/Arch/Esp8266/System/include/user_config.h:7,
from c:/tools/Sming/Sming/System/include/gdb/gdb_hooks.h:22,
from c:/tools/Sming/Sming/Core/SmingCore.h:15,
from c:/tools/Sming/samples/Basic_Blink/app/application.cpp:1:
c:/tools/Sming/Sming/Arch/Esp8266/Components/esp8266/include/mem.h:10:14: note: previous declaration 'void* pvPortMalloc(size_t, const char*, uint32)'
extern void *pvPortMalloc(size_t xWantedSize, const char *file, uint32 line);
^
In file included from c:/tools/Sming/Sming/Arch/Esp8266/System/include/user_config.h:7:0,
from c:/tools/Sming/Sming/System/include/gdb/gdb_hooks.h:22,
from c:/tools/Sming/Sming/Core/SmingCore.h:15,
from c:/tools/Sming/samples/Basic_Blink/app/application.cpp:1:
c:/tools/Sming/Sming/Arch/Esp8266/Components/esp8266/include/esp_systemapi.h:86:103: error: conflicting declaration of C function 'void ets_timer_arm_new(ETSTimer*, uint32_t, bool, int)'
extern void ets_timer_arm_new(ETSTimer *ptimer, uint32_t milliseconds, bool repeat_flag, int isMstimer);
^
In file included from c:/tools/Sming/Sming/Arch/Esp8266/Components/esp8266/include/esp_systemapi.h:44:0,
from c:/tools/Sming/Sming/Arch/Esp8266/System/include/user_config.h:7,
from c:/tools/Sming/Sming/System/include/gdb/gdb_hooks.h:22,
from c:/tools/Sming/Sming/Core/SmingCore.h:15,
from c:/tools/Sming/samples/Basic_Blink/app/application.cpp:1:
c:/tools/sming/Sming/Arch/Esp8266/Components/esp8266/ESP8266_NONOS_SDK/include/osapi.h:65:6: note: previous declaration 'void ets_timer_arm_new(ETSTimer*, uint32_t, bool, bool)'
void ets_timer_arm_new(os_timer_t *ptimer, uint32_t time, bool repeat_flag, bool ms_flag);
^
make[1]: *** [app/application.o] Error 1
make: *** [App-build] Error 2
But it seems that my SMING_HOME variable has the correct case.
C:toolsSmingsamplesBasic_Blink>echo %SMING_HOME%
C:toolsSmingSming
popelyuk 8 / 8 / 2 Регистрация: 04.12.2012 Сообщений: 130 |
||||||||||||||||||||
1 |
||||||||||||||||||||
03.01.2013, 16:29. Показов 8878. Ответов 8 Метки нет (Все метки)
Здравствуйте! Есть проблема при компиляции кода который использует forward declaration для избежания зацикливания хедеров, код выглядит приблизительно следующим образом: header_b.h
header_a.h
file_b.cpp
Пробовал заменить:
на
В таком случае пишет что нет подходящего конструктора: D:Dropboxsourcecmlcharacters.h: 602: error: no matching function for call to ‘cml::base_string<wchar_t>::base_string()’ Вот как это всё выглядит в реальном коде: Миниатюры
__________________
0 |
Nick Alte 1672 / 1044 / 174 Регистрация: 27.09.2009 Сообщений: 1,945 |
||||
03.01.2013, 16:34 |
2 |
|||
На созданные в typedef идентификаторы заранее сослаться не выйдет. Так что в месте, где проблема, надо было писать
и пользоваться нормальным именем (или там же его и за typedef‘ить).
0 |
popelyuk 8 / 8 / 2 Регистрация: 04.12.2012 Сообщений: 130 |
||||||||
03.01.2013, 16:55 [ТС] |
3 |
|||||||
На созданные в typedef идентификаторы заранее сослаться не выйдет. Так что в месте, где проблема, надо было писать
и пользоваться нормальным именем (или там же его и за typedef‘ить). Теперь пишет что: D:Dropboxsourcecmlexception.cpp:18: error: no matching function for call to ‘cml::base_string<wchar_t>::base_string()’ но вот же они конструкторы сто пятьсот штук аж:
В чём тут может быть проблема?
0 |
1672 / 1044 / 174 Регистрация: 27.09.2009 Сообщений: 1,945 |
|
03.01.2013, 17:17 |
4 |
Есть подозрение, что в этом месте недоступна реализация конструктора base_string(). Одного объявления мало, тут происходит инстанциация шаблона и нужен полный текст.
0 |
popelyuk 8 / 8 / 2 Регистрация: 04.12.2012 Сообщений: 130 |
||||
03.01.2013, 17:28 [ТС] |
5 |
|||
После того как закомментировал следующий код:
начало компилироваться, но только вот в чём здесь проблема непонятно для частичной специализации что нужно дублировать все функции основной реализации что-ли или почему из-за этого кода они не находило конструктора?
0 |
~ Эврика! ~ 1256 / 1005 / 74 Регистрация: 24.07.2012 Сообщений: 2,002 |
|
03.01.2013, 17:41 |
6 |
начало компилироваться, но только вот в чём здесь проблема непонятно для частичной специализации что нужно дублировать все функции основной реализации что-ли или почему из-за этого кода они не находило конструктора? Ага. Надо. Такие дела. Частичная специализация шаблона создаёт совершенно новый класс, который может иметь совершенно другой набор полей, методов, наследоваться от чего-то другого и т. д.
0 |
8 / 8 / 2 Регистрация: 04.12.2012 Сообщений: 130 |
|
03.01.2013, 18:24 [ТС] |
7 |
Ага. Надо. Такие дела. Частичная специализация шаблона создаёт совершенно новый класс, который может иметь совершенно другой набор полей, методов, наследоваться от чего-то другого и т. д. и что никак нельзя сделать так чтобы не дублировать все методы т.к. их там более чем дофига?
0 |
~ Эврика! ~ 1256 / 1005 / 74 Регистрация: 24.07.2012 Сообщений: 2,002 |
|
03.01.2013, 18:33 |
8 |
и что никак нельзя сделать так чтобы не дублировать все методы т.к. их там более чем дофига? Неа. Workaround: вынести изменяемую часть целиком в отдельный класс, в котором методов мало, и зачастичношаблонить уже его, а потом этот класс передать (шаблоном, интерфейсом, как угодн) классу, где методов дофига.
0 |
8 / 8 / 2 Регистрация: 04.12.2012 Сообщений: 130 |
|
03.01.2013, 18:47 [ТС] |
9 |
Неа. Workaround: вынести изменяемую часть целиком в отдельный класс, в котором методов мало, и зачастичношаблонить уже его, а потом этот класс передать (шаблоном, интерфейсом, как угодн) классу, где методов дофига. ясно, спасибо!
0 |
I’ve been trying to figure out an issue I’ve been having with cross-compiling C++ code on Linux for Windows. The code I’m trying to compile is:
#include <iostream>
int main(int argc, char** argv){
std::cout<<"Hello World!n";
return 0;
}
I’m trying to compile for a 64 bit windows installation, and so I run:
x86_64-w64-mingw32-g++ main.cpp
but it produces the following errors:
In file included from /usr/include/sched.h:34:0,
from /usr/include/pthread.h:23,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/x86_64-w64-mingw32/bits/gthr-default.h:35,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/x86_64-w64-mingw32/bits/gthr.h:148,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ext/atomicity.h:35,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/bits/ios_base.h:39,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ios:42,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ostream:38,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/iostream:39,
from main.cpp:1:
/usr/include/time.h:75:18: error: conflicting declaration ‘typedef __time_t time_t’
typedef __time_t time_t;
^
In file included from /usr/x86_64-w64-mingw32/include/stddef.h:7:0,
from /usr/lib/gcc/x86_64-w64-mingw32/4.9.2/include/stddef.h:1,
from /usr/include/wchar.h:51,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/cwchar:44,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/bits/postypes.h:40,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/iosfwd:40,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ios:38,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ostream:38,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/iostream:39,
from main.cpp:1:
/usr/x86_64-w64-mingw32/include/crtdefs.h:138:20: note: previous declaration as ‘typedef __time64_t time_t’
typedef __time64_t time_t;
^
In file included from /usr/x86_64-w64-mingw32/include/c++/4.9.2/cwctype:50:0,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/bits/locale_facets.h:39,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/bits/basic_ios.h:37,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ios:44,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ostream:38,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/iostream:39,
from main.cpp:1:
/usr/include/wctype.h:52:27: error: conflicting declaration ‘typedef long unsigned int wctype_t’
typedef unsigned long int wctype_t;
^
In file included from /usr/x86_64-w64-mingw32/include/stddef.h:7:0,
from /usr/lib/gcc/x86_64-w64-mingw32/4.9.2/include/stddef.h:1,
from /usr/include/wchar.h:51,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/cwchar:44,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/bits/postypes.h:40,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/iosfwd:40,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ios:38,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/ostream:38,
from /usr/x86_64-w64-mingw32/include/c++/4.9.2/iostream:39,
from main.cpp:1:
/usr/x86_64-w64-mingw32/include/crtdefs.h:107:24: note: previous declaration as ‘typedef short unsigned int wctype_t’
typedef unsigned short wctype_t;
^
The error line:
/usr/include/time.h:75:18: error: conflicting declaration ‘typedef __time_t time_t’
typedef __time_t time_t;
suggests to me that mingw is using the linux libraries instead of the ones compiled for windows, but upon searching I cannot seem to figure out how to resolve this.I’ve tried reinstalling the mingw-w64 package group thinking that maybe the libraries were not compiled correctly but I’m still receiving the same errors.
To be clear, I am able to compile this code with:
Any help or anything to point me in the right direction will be greatly appreciated. Thank you.
Last edited by InspiredOne (2015-05-24 21:48:59)