Как использовать проверку #if c float константами определенными через #define - C (СИ)
Формулировка задачи:
Для примера, привожу код, который хочу реализовать:
На это компилятор выдает следующие возражения:
Error[Pe059]: function call is not allowed in a constant expression. Line 31
Модифицирую до следующего:
Он ругается уже так:
Error[Pe018]: expected a ")" Line 31
Зато после такого:
Выдает:
Error[Pe018]: expected a ")" Line 31
Fatal Error[Pe035]: #error directive: "Verify setup CLK". Line 32
В связи с этим подскажите, кто знает как реализовать задуманное? Желательно пример
#define Ar 5 #define Br 3 #define Cr ((uint32_t )(Ar/Br)) #if (Cr<5) // Line 31 #error "Verify setup CLK" #endif
#define Cr const static ((uint32_t )(Ar/Br)) #if (Cr<5) // Line 31 #error "Verify setup CLK" #endif
#define Cr (const static ((uint32_t )(Ar/Br))) #if (Cr<5) // Line 31 #error "Verify setup CLK" // Line 32 #endif
Решение задачи: «Как использовать проверку #if c float константами определенными через #define»
textual
Листинг программы
#include <stdio.h> #define DIV ( 1000 ) #define FakeAr (1) #define Ar ((double)(FakeAr) / (double)(DIV)) #define FakeBr (30000) #define Br ((double)(FakeBr)) #define FakeCr (FakeAr * FakeBr) #if ((FakeCr) < (5 * (DIV))) #error "Vsyo ploho!" #endif #define Cr ((double)(FakeCr) / (double)(DIV)) int main(void) { printf("Ar: %f\nBr: %f\nCr: %f\n", Ar, Br, Cr); return 0; }
Объяснение кода листинга программы
- Подключаем стандартную библиотеку ввода-вывода
- Определяем константы: — DIV равна 1000 — FakeAr равна 1 — Ar вычисляем как FakeAr, приведенную к типу double, деленную на DIV — FakeBr равна 30000 — Br вычисляем как FakeBr, приведенную к типу double — FakeCr вычисляем как произведение FakeAr и FakeBr
- Проверяем, что FakeCr меньше 5, умноженного на DIV
- Если условие в if выполняется, выводим сообщение
Vsyo ploho!
- Определяем Cr как FakeCr, деленное на DIV
- В функции main выводим значения Ar, Br и Cr
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д