C установка IDE C структура програми C змінні C типи даних С функція printf C константи C арифметичні операції C операції порівняння і логічні операції C порозрядні операції C операції присвоювання C перетворення типів C умовні конструкції C цикли С масиви і рядки С функція scanf C препроцесор. Директива #include C #define директива C макроси C умовна компіляція C функції. Визначення та опис функцій C функції. Передача параметрів в функцію C функції. Повернення результату з функції C функції. Рекурсивні функції C область видимості змінних C зовнішні об'єкти C вказівники C вказівник. Операції з вказівниками C покажчики. Арифметика покажчиків C покажчики. Константи і покажчики C покажчики. Покажчики та масиви C покажчики. Масиви покажчиків, рядки і багаторівнева адресація C покажчики. Покажчики в параметрах функції C покажчики. Динамічна пам'ять C покажчики. Покажчик як результат функції C покажчики. Управління динамічної пам'яттю C покажчики. Покажчики на функцію C покажчики. Покажчики на функції як параметри і результати функцій C покажчики. Функції зі змінною кількістю параметрів C struct. Визначення структур C struct. Структури як елементи структур C struct. Покажчики на структури C struct. Масиви структур C struct. Структури і функції C struct. union об'єднання C struct. Бітові поля С file. Введення-виведення і робота з файлами C file. Читання і запис бінарних файлів C file. Читання і запис структур в файл C file. Читання і запис текстових файлів C file. Форматування вводу-виводу C file. Позиціонування в потоці C file. Консольне введення-виведення

C умовна компіляція


Директиви умовної компіляції дозволяють в залежності від умов додати в файл певний код.

Перш за все це такі директиви як #if / #else / #endif , дія яких нагадує умовну конструкцію if :

#if умова
      текст_1
#else
      текст_2
#endif

Якщо умова повертає істинне значення ( true ), то в підсумковий вихідний файл вставляється текст_1 . Якщо ж умова повертає помилкове значення ( false ), то вставляється текст_2 , наприклад:

#include <stdio.h>
#define N 22
 
int main(void)
{
#if N==22
    printf("N=22");
#else
    printf("N is undefined");
#endif
    return 0;
}

// RESULT:
// N=22

За допомогою директиви #elif можна перевіряти додаткові умови:

#include <stdio.h>
#define N 24
 
int main(void)
{
#if N==22
    printf("N = 22");
#elif N==24
    printf("N=24");
#else
    printf("N is undefined");
#endif
    return 0;
}

За допомогою директиви #ifdef можна перевіряти, чи визначено ідентифікатор, і якщо він визначений, вставляти в вихідний код певний текст:

#include <stdio.h>
#define DEBUG
 
int main(void)
{
#ifdef DEBUG
    printf("Debug mode");
#endif
    return 0;
}

Зворотньою дією володіє директива #ifndef - вона включає текст, якщо ідентифікатор не визначений:

#include <stdio.h>
//#define DEBUG
 
int main(void)
{
#ifndef DEBUG
    printf("Production mode");
#else
    printf("Debug mode");
#endif
    return 0;
}

Якщо нам одночасно треба перевірити значення двох ідентифікаторів, то можна використовувати спеціальний оператор defined :

#include <stdio.h>
#define BETA
#define DEBUG
 
int main(void)
{
#if defined DEBUG && !defined BETA
    printf("debug mode; final version");
#elif defined DEBUG && defined BETA
    printf("debug mode; beta version");
#else
    printf("undefined mode");
#endif
    return 0;
}

Наш партнер:
beta test mp3 playlist downloader