Я пишу простую библиотеку для моего AVR, и я хотел попробовать использовать макро функцию для определения моей скорости передачи. Многие функции в библиотеке AVR используют макрос F_CPU, а также тот, который я хочу написать.
Вот что у меня есть для определения макроса и моей предполагаемой реализации:
#define BAUD_SELECT(baud) ((F_CPU)/(2*baud)-1)
myubrr = BAUD_SELECT(38400);
Я пытался использовать #define F_CPU 8000000UL, а также в файле make как -D "F_CPU 8000000UL", но всегда получаю ту же ошибку в строке реализации.
expected ')' before numeric constant
Я уверен, что это как-то связано с моим злоупотреблением #define и определением макроса в заголовочном файле, реализацией в соответствующем файле .c и определением F_CPU в make-файле или другом основном файле. .c файл.
EDIT
Я сделал изменение в скобках, как предложено, запустил препроцессор и нашел выходной файл (по крайней мере, я думаю)
unsigned int myubrr = ((8000000UL 1)/(2*(baud))-1);
Он помещает лишнюю 1, где должно быть F_CPU, у меня нет опыта работы с препроцессором, поэтому я не уверен, как заставить его этого не делать, но, возможно, в этом проблема?