abivan (12.12.2019 11:10, просмотров: 784) ответил fk0 на Во-первых ты компилируешь C-файл в режиме C++ -- об этом говорит ошибка "no operator++..." Для C++ нужно заменить строчку на "for (i = zero; i<= tenth; (Numbers)(i+1))". Во-вторых ошибка в 60 строке только в C является варнингом, а в C++ будет
в каком режиме компилит XC32 это он сам решил(видимо из за строчной буквы расширения .С На плюсах я не пишу. Не то чтоб не хотелось, на данном этапе в ембедед нет такой возможности. для pic18/24 нет плюсов а код должен работать и на них и на PIC32. Я еще использую компилятор HT-Std - 15-ти летней давности в нем нет поддержи С99. Поэтому пишу так, чтоб моя прога работала на любом компиляторе и это меня не напрягает. А в QC много чего есть полезного и интересного, например help с работающими примерами использования функций, которые можно сбилдить и посмотреть результат. В студии для меня нет необходимости.
Вот результаты билда в режиме Си
"C:\Program Files (x86)\Microchip\xc32\bin\xc32-gcc.exe" -c -Wall -mprocessor=32MX370F512H V:/1.c
V:/1.c: In function 'main':
V:/1.c:60:5: warning: passing argument 1 of 'Numbers_tostr' from incompatible pointer type [enabled by default]
puts(Numbers_tostr(&c)); // this gives only warning
^
V:/1.c:48:12: note: expected 'const enum Numbers *' but argument is of type 'enum Colors *'
SUPER_ENUM(Numbers, zero, first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth)
^
V:/1.c:38:17: note: in definition of macro 'SUPER_ENUM'
const char *_name_##_tostr(const _name_ *_v_) { \
^
ЗЫ: я вообще странный по жизни, не беру кредитов, езжу на электромобиле, вместо нортенкомандера пользуюсь ZtreeWin, использую 2 гаджета(кнопочный телефон + планшет) вместо одного смартфона. Ну и QC вместо студии тудаже.