Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 1.17.3 Модифікатори Одесі і разові - Програмування С, С++теорія та практика (частина 1) - Studbook
Главная->Інформатика та програмування->Содержание->1.17.3 Модифікатори Одесі і разові

Програмування С, С++теорія та практика (частина 1)

1.17.3 Модифікатори Одесі і разові

Результатом роботи компілятора мови Сі є файл, що містить об’єктний код програми. Файли з об’єктним кодом, що отримуються в результаті компіляції всіх файлів програми, компоновщик об’єднує в один файл виконання.

При компіляції всі глобальні ідентифікатори програми, тобто імена функцій і глобальних змінних, зберігаються в об’єктному коді і використовуються компоновщиком в процесі роботи. По замовчуванню ці ідентифікатори зберігаються в своєму початковому вигляді. Крім того, в якості першого символу кожного ідентифікатора компілятор мови Сі додає символ підкреслення.

Компоновщик по замовчуванню розрізняє великі та малі літери, тому ідентифікатори, що використовуються в різних файлах програми для іменування одного і того самого об’єкта, повинні повністю співпадати з точки зору як орфографії, так і регістрів літер. Для здійснення співпадіння ідентифікаторів, що використовуються в різномовних файлах, використовуються модифікатори разсаї і сіїесї.

Використання модифікатора разсаї до ідентифікатора призводить до того, що ідентифікатор перетворюється до верхнього регістру і до нього не додається символ підкреслення. Цей ідентифікатор не може

використовуватися для іменування в програмі на мові Сі глобального об’єкта, який використовується також в програмі на мові Паскаль. В об’єктному коді, що згенерований компілятором мови Сі, і в об’єктному коді, що згенерований компілятором мови Паскаль, ідентифікатор буде представлений ідентично.

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

Функція типу рахсаі не може мати змінне число параметрів, як, наприклад, функція ргіп/().

Існує ще один модифікатор, яка присвоює всім функціям і покажчикам на функції тип разсаї. Це означає, що вони будуть використовувати послідовність виклику, що прийнята в мові Паскаль, а їх ідентифікатори будуть можливими для виклику з програми на Паскалі. При цьому можна сказати, що деякі функції і покажчики на функції використовують викликаючу послідовність, прийняту в мові Сі, а їх ідентифікатори мають традиційний вигляд для ідентифікаторів мови Сі. Для цього їх оголошення повинні містити модифікатор сіїесї.

 

85