Байланыс (бағдарламалық жасақтама) - Linkage (software)

Бағдарламалау тілдерінде, әсіресе құрастырылған тілдерде C, C ++, және Д., байланыстыру бүкіл бағдарламада бір затқа немесе бір синглге қалай атауға болатындығын немесе сілтеме жасай алмайтынын сипаттайды аударма бірлігі.

The статикалық кілт сөз функцияның немесе айнымалының оның аударма бірлігіне көрінуін шектеу үшін С тілінде қолданылады. Бұл C ++ тілінде де жарамды. (C ++ 98/03 бұл қолданысты қолданыстан шығарды жасырын есімдер, бірақ бұдан былай C ++ 11-де қолданылмайды.) Сонымен қатар, C ++ кез-келгеніне жанама әсер етеді const атау кеңістігінің ауқымы, егер ол тікелей жария етілмесе, ішкі байланысы бар экстерн, С-ға қарағанда.

Атаудың байланысы онымен байланысты, бірақ одан ерекшеленеді ауқымы. Атаудың ауқымы - бұл аударма бірлігінің көрінетін бөлігі. Мысалы, ғаламдық ауқымы бар атау (ол С-тегі файл ауқымымен және С ++ тіліндегі ғаламдық атау кеңістігімен бірдей) файлдың кез-келген бөлігінде көрінеді. Оның қолданылу аясы сол атқа сыртқы немесе ішкі байланыс берілген-берілмегеніне қарамастан, аударма бөлімшесінің соңында аяқталады.

Егер атаудың сыртқы байланысы болса, атауды білдіретін тұлғаға сол аудармаға арналған басқа декларацияны қолдана отырып, басқа аударма бірлігінен және сол декларацияны қолдана отырып, сол аударма бірлігінің басқа аумақтарынан сілтеме жасауға болады. Егер атаудың ішкі байланысы болған болса, онда мұндай мәлімдеме бірдей атауды қолданғанымен, жеке тұлғаны білдіреді, бірақ оның құрылымын сол аударма бірлігінде бөлек декларациялармен атауға болады. Ешқандай байланысы жоқ атауды әртүрлі көлемдегі декларациялардан, тіпті бір аударма бірлігінің ішінен де атауға болмайды. Мұндай атауларға функциялардың параметрлері және жергілікті айнымалылар мысал бола алады. Бөлшектер С-мен (тек нысандар мен функциялар - бірақ байланысы жоқ) және C ++ арасында және осы жеңілдетілген шолу арасында ерекшеленеді.

Тілдер арасындағы байланыс әр түрлі тілдер сияқты мұқият болу керек безендіру олардың сыртқы белгілері әр түрлі. Жалпы идиома қолданады экстерн «С» C ++ және C кодтарын байланыстыру үшін.

С байланыстыру

ISO / IEC 9899: TC3 (C99 стандарты) келтірілген «байланыстың» анықтамасы. C «идентификатор» терминін қолданады, онда бұл мақалада «аты» қолданылады (оның соңғысы C ++ байланысын рәсімдеу үшін қолданылады):

Әр түрлі көлемде немесе бірдей көлемде жарияланған идентификаторды байланыстыру деп аталатын процесс арқылы бір объектіге немесе функцияға сілтеме жасауға болады.[1]

Төменде байланыстың кең таралған мысалы келтірілген:

/ * файл demo1.c * /  / * extern * / жарамсыз ақымақ(жарамсыз); / * extern қосымша - бұл әдепкі * /  int негізгі(жарамсыз){  ақымақ();  қайту 0;  }
  / * файл demo2.c * /  жарамсыз ақымақ(жарамсыз){  ...}

Функция ақымақ функциясы анықталған екі файлда жарияланады demo2.c. Байланыс арқылы, ақымақ шақырылды негізгі () ішінде demo1.c сілтеме жасайды ақымақ жылы demo2.c. Бұл функцияның сыртқы байланысының мысалы.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ ISO / IEC 9899. Ресми C99 құжаттары, оның ішінде техникалық корригенда және негіздеме. 2007 жылдан бастап стандарттың соңғы нұсқасы болып табылады «ISO / IEC 9899: TC3» (PDF). (3.61 MiB )