Програмування С, С++теорія та практика (частина 1)
1.17.3 Модифікатори Одесі і разові
Результатом роботи компілятора мови Сі є файл, що містить об’єктний код програми. Файли з об’єктним кодом, що отримуються в результаті компіляції всіх файлів програми, компоновщик об’єднує в один файл виконання.
При компіляції всі глобальні ідентифікатори програми, тобто імена функцій і глобальних змінних, зберігаються в об’єктному коді і використовуються компоновщиком в процесі роботи. По замовчуванню ці ідентифікатори зберігаються в своєму початковому вигляді. Крім того, в якості першого символу кожного ідентифікатора компілятор мови Сі додає символ підкреслення.
Компоновщик по замовчуванню розрізняє великі та малі літери, тому ідентифікатори, що використовуються в різних файлах програми для іменування одного і того самого об’єкта, повинні повністю співпадати з точки зору як орфографії, так і регістрів літер. Для здійснення співпадіння ідентифікаторів, що використовуються в різномовних файлах, використовуються модифікатори разсаї і сіїесї.
Використання модифікатора разсаї до ідентифікатора призводить до того, що ідентифікатор перетворюється до верхнього регістру і до нього не додається символ підкреслення. Цей ідентифікатор не може
використовуватися для іменування в програмі на мові Сі глобального об’єкта, який використовується також в програмі на мові Паскаль. В об’єктному коді, що згенерований компілятором мови Сі, і в об’єктному коді, що згенерований компілятором мови Паскаль, ідентифікатор буде представлений ідентично.
Якщо модифікатор разсаї застосовується до ідентифікатора функції, то він здійснює вплив також і на передачу аргументів функції. Засилання аргументів у стек здійснюється в цьому випадку не в оберненому порядку, як прийнято в компіляторах мови Сі, а в прямому - першим засилається в стек перший аргумент.
Функція типу рахсаі не може мати змінне число параметрів, як, наприклад, функція ргіп/().
Існує ще один модифікатор, яка присвоює всім функціям і покажчикам на функції тип разсаї. Це означає, що вони будуть використовувати послідовність виклику, що прийнята в мові Паскаль, а їх ідентифікатори будуть можливими для виклику з програми на Паскалі. При цьому можна сказати, що деякі функції і покажчики на функції використовують викликаючу послідовність, прийняту в мові Сі, а їх ідентифікатори мають традиційний вигляд для ідентифікаторів мови Сі. Для цього їх оголошення повинні містити модифікатор сіїесї.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
