Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 75
1

Условная компиляция, #ifndef #ifdef

29.03.2024, 12:05. Показов 372. Ответов 4

Author24 — интернет-сервис помощи студентам
Фрагмент кода:
C++
1
2
3
4
#ifndef BOARD0
Port_ResetBits(Port5,1)
#elifdef BOARD0
PortSetBit(Port5, 1)
и ни первая, ни вторая строки не выполняются. Может ли такое быть и почему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2024, 12:05
Ответы с готовыми решениями:

Команды #ifndef #ifdef и #endif
Помогите разобраться с командами #ifndef #endif и #ifndef в книге все как то не понятно объяснено...

Какую функцию выполняет #ifdef и #ifndef ?
#ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE ...

Условная компиляция
Помогите мне понять ,что я делаю не так. Есть программа, которая проверяет введённое пользователем...

Условная компиляция
Простенькая программка, которая при изменении в коде S с 1 на 2 должна выводить разные значения....

Условная компиляция
Вопрос такой. Какие константы или флаги использовать что бы при компиляции в релизе компилировался...

4
Эксперт функциональных языков программированияЭксперт С++
4125 / 1939 / 960
Регистрация: 01.06.2021
Сообщений: 6,831
Записей в блоге: 6
29.03.2024, 12:14 2
А где
C++
1
#endif
0
фрилансер
5843 / 5372 / 1102
Регистрация: 11.10.2019
Сообщений: 14,345
29.03.2024, 12:15 3
jykm,
C++
1
2
3
4
5
#ifndef BOARD0
Port_ResetBits(Port5,1)
#else 
PortSetBit(Port5, 1)
#endif

кстати,
#elifdef identifier (since C++23)
#elifndef identifier (since C++23)
0
4013 / 2560 / 429
Регистрация: 09.09.2017
Сообщений: 11,403
29.03.2024, 12:17 4
Ну, при желании-то все что угодно можно сломать. Но если этого не делать, все работает:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ cat main.c
#include <stdio.h>
 
int main(){
  #ifndef BOARD0
    printf("ifndef\n");
  #elifdef BOARD0
    printf("def\n");
  #else
    printf("wtf\n");
  #endif
}
$ gcc main.c
$ ./a.out 
ifndef
$ gcc main.c -DBOARD0
$ ./a.out 
def
$
0
Вездепух
Эксперт CЭксперт С++
12783 / 6662 / 1793
Регистрация: 18.10.2014
Сообщений: 16,849
29.03.2024, 18:22 5
Цитата Сообщение от jykm Посмотреть сообщение
#elifdef BOARD0
Ну, во-первых, для #elifdef нужен C++23

Цитата Сообщение от jykm Посмотреть сообщение
не выполняются
Что значит "не выполняются"? Что это вообще за код? Это вызов функции? Или объявление? Или что-то еще?
0
29.03.2024, 18:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2024, 18:22
Помогаю со студенческими работами здесь

Условная компиляция с массивом
Вообще с помощью условной компиляции надо сравнить первые три ячейки массива с такими номерами...

Visual studio code. Не работают директивы #ifdef и #ifndef (с++)
Visual Studio Code(v1.40), система debian 10 c_cpp_properties.json { &quot;configurations&quot;: , ...

Условная компиляция
Здравстуйте Если задача в зависимости от разрядности компилируемого приложения, подключить разные...

Условная компиляция
как препроцессор с помощью условной компиляции даёт понять компилятору, что часть программы...

Условная компиляция
Здравствуйте! Прошу помогите, пожалуйста! Я создала программу, которая сначала создает массив из 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru