ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Макроси в C ++
         

     

    Інформатика, програмування

    Макроси в C + +

    Макроси в C вони дуже важливі, але в C + + застосовуються набагато менше. Перше правило щодо них таке: не використовуйте їх, якщо ви не зобов'язані це робити. Як було відмічено, майже кожен макрос проявляє свій вада або в мові, або у програмі. Якщо ви хочете використовувати макроси, прочитайте, будь ласка, спочатку дуже уважно керівництво по вашій реалізації C препроцесора.

    Простий макрос визначається так:

    # define name rest of line

    Коли name зустрічається як лексема, воно замінюється на rest of line.

    Наприклад:

    named name =

    після розширення дасть:

    named = rest of line

    Можна також визначити макрос з параметрами.

    Наприклад:

    # define mac (a, b) argument1: a argument2: b

    При використанні mac повинно даватися два рядки параметра. Після розширення mac () вони замінюють a і b.

    Наприклад:

    expanded = mac (foo bar, yuk yuk)

    після розширення дасть

    expanded = argument1: foo bar argument2: yuk yuk

    Макроси обробляють рядки і про синтаксис C + + знають дуже мало, а про типи C + + або областях видимості - нічого. Компілятор бачить тільки розширену форму макросу, тому помилка в макросі діагностується коли макрос розширений, а не коли він визначений. В результаті цього виникають незрозумілі повідомлення про помилки.

    Ось такими макроси можуть бути цілком:

    # define Case break; case

    # define nl << "n"

    # define forever for (;;)

    # define MIN (a, b) (((a) <(b))? (a): (b))

    Ось зовсім непотрібні макроси:

    # define PI 3.141593

    # define BEGIN (

    # define END)

    А ось приклади небезпечних макросів:

    # define SQUARE (a) a * a

    # define INCR_xx (xx )++

    # define DISP = 4

    Щоб побачити, ніж вони небезпечні, спробуйте провести розширення в наступному прикладі:

    int xx = 0; //Глобальний лічильник

    void f () (

    int xx = 0;// локальна змінна

    xx = SQUARE (xx 2);// xx = xx 2 * xx 2

    INCR_xx;// збільшує локальний xx

    if (a-DISP == b) (//A-= 4 == b

    // ...

    )

    )

    Якщо ви змушені використовувати макрос, при посиланні на глобальні імена використовуйте операцію дозволу області видимості:: і укладайте входження імені параметра макросу в дужки скрізь, де це можливо (див. MIN вище).

    Зверніть увагу на відмінність результатів розширення цих двох макросів:

    # define m1 (a) something (a)// складний коментар

    # define m2 (a) something (a)/* глибокодумний коментар */

    наприклад,

    int a = m1 (1) +2;

    int b = m2 (1) +2;

    розширює в

    int a = something (1)// складний коментар 2;

    int b = something (1)/* глибокодумний коментар */2;

    За допомогою макросів ви можете розробити свій власний мова. Швидше за все, для всіх інших він буде незбагненний. Крім того, C препроцесор - дуже простий Макропорцесори. Коли ви спробуєте зробити що-небудь нетривіальне, ви, мабуть, знайдете, що зробити це або неможливо, або надзвичайно важко.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status