Как использовать проверку #if c float константами определенными через #define - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Для примера, привожу код, который хочу реализовать:
#define Ar 5
#define Br 3
#define Cr ((uint32_t )(Ar/Br))
 
#if (Cr<5)                                            // Line 31
#error "Verify setup CLK" 
#endif
На это компилятор выдает следующие возражения: Error[Pe059]: function call is not allowed in a constant expression. Line 31 Модифицирую до следующего:
#define Cr const static ((uint32_t )(Ar/Br))
#if (Cr<5)                                               // Line 31      
#error "Verify setup CLK" 
#endif
Он ругается уже так: Error[Pe018]: expected a ")" Line 31 Зато после такого:
#define Cr (const static ((uint32_t )(Ar/Br)))
#if (Cr<5)                                                // Line 31
#error "Verify setup CLK"                            // Line 32
#endif
Выдает: Error[Pe018]: expected a ")" Line 31 Fatal Error[Pe035]: #error directive: "Verify setup CLK". Line 32 В связи с этим подскажите, кто знает как реализовать задуманное? Желательно пример

Решение задачи: «Как использовать проверку #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;
}

Объяснение кода листинга программы

  1. Подключаем стандартную библиотеку ввода-вывода
  2. Определяем константы: — DIV равна 1000 — FakeAr равна 1 — Ar вычисляем как FakeAr, приведенную к типу double, деленную на DIV — FakeBr равна 30000 — Br вычисляем как FakeBr, приведенную к типу double — FakeCr вычисляем как произведение FakeAr и FakeBr
  3. Проверяем, что FakeCr меньше 5, умноженного на DIV
  4. Если условие в if выполняется, выводим сообщение Vsyo ploho!
  5. Определяем Cr как FakeCr, деленное на DIV
  6. В функции main выводим значения Ar, Br и Cr
  7. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы