Page 49 - 4989
P. 49

якщо  в  програмі  мовою  С++  використовується  функція  із
                  бібліотеки, написаної мовою С, то така функція оголошується з
                  специфікатором extern “C”:
                        extern “C” int someFunction(int x, int y);

                        Узгодження          про       виклики        мови       С      аналогічне        до
                  використовуваного              С++       у      частині       передачі/повернення
                  аргументів  та  очистки  стеку,  однак  відрізняється  способом

                  утворення імен експортованих функцій.
                        Для  узгодження  про  виклики  мови  С++  застосовується
                  специфікатор __cdecl (всі функції, визначені в програмі на С++,
                  мають цей специфікатор по замовчуванню, тому його можна не

                  вказувати).
                        Для  узгодження  про  виклики  Windows  API  в  C++
                  застосовується  специфікатор  __stdcall  (визначений  у  стандарті

                  С++) або WINAPI (визначений у заголовочних файлах Windows).
                        Для  узгодження  про  виклики,  в  якому  передача  параметрів
                  відбувається  через  регістри  або  регістри  і  стек,  у  С++

                  застосовується специфікатор __fastcall.



                                        5.4  Порядок виконання роботи

                        1. Відкрити проект, створений у лабораторній роботі №4.
                        2. Зробити оголошення масиву глобальним (винести його за
                           межі функції main).

                        3. Оформити код обробки масиву як функцію з двома
                           аргументами (початкова адреса масиву та кількість
                           елементів) та цілочисленим типом повернення. Наприклад,

                           оголошення функції може виглядати так:
                           int processArray(int* array, int N);
                           Для варіантів, де задачею є підрахунок кількості значень –
                           повернути результат підрахунку. Для решти варіантів

                           повернути кількість оброблених елементів. Викликати цю
                           функцію з головної функції.
                        4. Для дослідження узгодження про виклики stdcall

                           пропонується використати функцію Windows API
                           MessageBox. Приклад виклику цієї функції:

                           int rc = MessageBox(NULL, "Text", "Caption", MB_OKCANCEL);


                                                                 49
   44   45   46   47   48   49   50   51   52   53   54