Страница 1 из 1
Ругается компилятор
Добавлено: Чт апр 26, 2018 08:15:59
dds7sdd
Подключаю библиотеку для OLED на SSD1306 в CVAVR. Компилятор пишет:"Line 8: '(' expected".
Код:
Код: Выделить всё
#ifndef I2C_MASTER_H
#define I2C_MASTER_H
#define I2C_READ 0x01
#define I2C_WRITE 0x00
void i2c_init(void);
uint8_t i2c_start(uint8_t address);
uint8_t i2c_write(uint8_t data);
uint8_t i2c_read_ack(void);
uint8_t i2c_read_nack(void);
uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length);
uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length);
uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length);
uint8_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length);
void i2c_stop(void);
#endif // I2C_MASTER_H
Не понимаю где он хочет, что бы была скобка?
Подскажите плз.
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 09:57:26
Аlex
Причём тут "библиотека для OLED" и код, который Вы сюда выложили ?
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 10:11:11
dds7sdd
[uquote="Аlex",url="/forum/viewtopic.php?p=3363276#p3363276"]Причём тут "библиотека для OLED" и код, который Вы сюда выложили ?[/uquote]
OLED работает по I2C.
Это инициализация TWI функций на сколько я понимаю. В Вложении библиотека полностью.
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 14:01:39
arkhnchul
приведите всю ругань компилятора целиком.
в архиве в i2c_master.h зачем-то скобки вокруг unsigned char в прототипе функции. Без них все собирается avr-gcc.
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 14:34:26
viiv
[uquote="dds7sdd",url="/forum/viewtopic.php?p=3363282#p3363282"][В Вложении библиотека полностью.[/uquote]
Код в архиве отличается от того, что Вы дали в первом посте. Как раз в 8-ой строке. Это чтобы всех запутать?

Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 18:00:47
dds7sdd
[uquote="viiv",url="/forum/viewtopic.php?p=3363455#p3363455"][uquote="dds7sdd",url="/forum/viewtopic.php?p=3363282#p3363282"][В Вложении библиотека полностью.[/uquote]
Код в архиве отличается от того, что Вы дали в первом посте. Как раз в 8-ой строке. Это чтобы всех запутать?

[/uquote]
Да, прошу прощения, это мои извращения там были. Не обращайте на эту строчку внимания в вложенном файле. Оригинальный код я привел в первом посте. Компилятор ругается на все конструкции типа:
Код: Выделить всё
uint8_t i2c_start(uint8_t address);
uint8_t i2c_write(uint8_t data);
uint8_t i2c_read_ack(void);
и т. д.
Если убрать восьмую строчку он начнет точно так же говорить о ожидаемой скобке и про девятую и т. д.
Привожу скрин с руганиной CVAVR.
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 18:37:05
viiv
uint8_t неопределен на момент включения указанного файла (неза-typedef-ен)
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 20:27:08
dds7sdd
Почему у автора это работает? И что нужно сделать, что бы работало в моем случае?
Re: Ругается компилятор
Добавлено: Чт апр 26, 2018 21:52:33
uk8amk
Использовать stdint.h
Re: Ругается компилятор
Добавлено: Ср май 02, 2018 15:20:51
dds7sdd
[uquote="uk8amk",url="/forum/viewtopic.php?p=3363793#p3363793"]Использовать stdint.h[/uquote]
Так он заинклюден в main (см. влож. скрин).
Re: Ругается компилятор
Добавлено: Ср май 02, 2018 19:29:25
uk8amk
Так ошибка же не в main возникает.
Воткните туда куда просит.
Re: Ругается компилятор
Добавлено: Чт май 03, 2018 10:30:23
dds7sdd
Ну Ок, воткнул в I2C-master. Так еще страшнее (см. влож. скрин)...
Re: Ругается компилятор
Добавлено: Чт май 03, 2018 11:18:21
viiv
[uquote="dds7sdd",url="/forum/viewtopic.php?p=3367988#p3367988"]Ну Ок, воткнул в I2C-master. Так еще страшнее (см. влож. скрин)...[/uquote]
так теперь ругается на файл ssd1306IIC.c
dds7sdd, в Си раздельная компиляция. т.е. каждый файл исходника (*.с) компилируется независимо от других. Если в ssd1306IIC.c используются нестандарные типы (например, uint16_t, ...), то они должны быть определены в этом файле (ssd1306IIC.c) ДО ИХ ИСПОЛЬЗОВНИЯ. Определены ли эти типы в других файлах-исходниках (main.c, i2c_master.c, ...) в момент компиляции ssd1306IIC.c не играет никакой роли.
PS Не все посмотрел

На i2c_master.c тоже ругается. Вы хотите перенести проект gcc под CVAVR? Советы:
1) хотябы минимально почитать книжки по Си
2) исправляйте самую первую ошибку - не смотрите на кучу других. Часто они (другие ошибки) являются следствием тех, которые компилятор выдал ранее. Как только исправили первую ошибку - компилируйте и опять исправляейте самую первую ошибку.
Если уж спрашиваете, то приводите всю информацию. Например, вижу у Вас в проекте *.h файлы (pgmspace.h, io.h ...) - это часть CVAVR (у меня нет CVAVR) или Вы их взяли из avr-libc? Если это не часть CVAVR, то желательно и их привести во вложении. Тогда, возможно, тот у кого есть CVAVR поможет Вам. Иначе, как Вам помочь
Re: Ругается компилятор
Добавлено: Чт май 03, 2018 11:59:16
dds7sdd
Подставил в SSD1306.с...
Re: Ругается компилятор
Добавлено: Чт май 03, 2018 12:14:27
viiv
Что делает строка
понимаете?
После этой строки, препроцессор всякий раз, когда встретит uint8_t заменит uint8_t на пустую строку. Очевидно, что это не правильно.
препроцессор заменит это на
а компилятор предсказуемо выдаст ошибку.