Позовите Ц++ са Ц

Pozovite C Sa C



У програмирању, често постоји потреба да Ц и Ц++ раде заједно, обично када се ажурира стари код или комбинују модули на различитим језицима. Коришћење Ц++ кода у Ц програмима је веома корисно за програмере, посебно када ажурирају стари софтвер или мешају делове који су написани на оба језика. Овај водич ће вам показати како да учините да Ц++ функције раде са Ц на једноставним и корисним примерима. Позивање Ц++ из Ц програма може изгледати незгодно, али овај чланак објашњава све корак по корак, тако да је лако пратити и почети користити два језика заједно. Овај водич је од помоћи за ваше пројекте без обзира на ниво вашег знања програмирања.

Разумевање основа

Када је у питању позивање Ц++ функција из Ц и коришћење Ц++ објеката, потребно је размотрити неколико кључних елемената:

Позивање на Ц++ класе у Ц

Уобичајени приступ референцирању Ц++ класа у Ц-у укључује коришћење показивача на класе које се могу пренети између Ц и Ц++ кода.







Име Мангле

Да бисте спречили промене имена које могу утицати на препознавање у Ц-у, кључно је да имена буду доследна. Ово осигурава да Ц може исправно да идентификује и користи функције и објекте.



Датотека заглавља за двоструку намену

Датотека заглавља игра кључну улогу, служећи двострукој сврси и за Ц и за Ц++. Укључује дефиниције класа које Ц++ препознаје и инкапсулира функције приступа за Ц.



Како позвати Ц++ са Ц

За позивање Ц++ функција из Ц-а, екстерна „Ц“ декларација је кључна. Када се примени на Ц++ функције, обезбеђује да се имена функција третирају у Ц стилу (користећи Ц-везу) током процеса компилације. Ц не препознаје карактеристике Ц++-а као што су преоптерећење функција и мењање имена до којих може доћи током Ц++ компилације. Користећи екстерни „Ц“, Ц++ компајлер генерише имена функција која се придржавају Ц конвенција, омогућавајући беспрекорну интероперабилност. Ова декларација обезбеђује стандардизовани интерфејс, омогућавајући Ц коду да приступи и користи Ц++ функције без наиласка на сукобе имена или проблеме са компатибилношћу. Следе примери позивања Ц++-а из Ц-а. Да бисмо разумели како ова комбинација функционише, погледајмо пажљивије инстанце.





Практични примери: Израчунајте површину круга позивањем Ц++ из Ц

У овом једноставном примеру, упутићемо вас како можете израчунати површину круга позивањем Ц++ функције у Ц. Овај код се састоји од датотеке заглавља (цирцле.х) и датотеке имплементације (цирцле.цпп). Први део кода укључује екстерну Ц декларацију у датотеци заглавља. Погледајте следећи код. Затим, хајде да разрадимо сваки ред кода појединачно:

#ифндеф ЦИРЦЛЕ_АРЕА
#дефине ЦИРЦЛЕ_АРЕА

екстерн 'Ц' {

дупло израчунати_ЦАреа ( дупло рад ) ;

}

#ендиф

дупло Цирцле_ЦАреа ( дупло рад ) {

повратак 3.14159 * рад * рад ;

}

Хајде да поделимо сваки део:



#ифндеф ЦИРЦЛЕ_АРЕА и #дефине ЦИРЦЛЕ_АРЕА

Ове линије су део инцлуде гуардс-а који обезбеђује да садржај датотеке заглавља буде укључен само једном у процесу компилације. Ако ЦИРЦЛЕ_АРЕА није дефинисан, следећи код ће бити укључен и ЦИРЦЛЕ_АРЕА ће бити дефинисан.

екстерн 'Ц'

Ова синтакса се користи за декларисање да следећа функција има Ц везу. Ово је неопходно када пишете код који ће бити позван и из Ц и из Ц++.

дупло израчунати_ЦАреа ( дупло рад ) ;

Ова линија декларише функцију под називом „цалцулате_Цареа“ која узима двоструки аргумент (рад) и враћа дупли аргумент.

Екстерна „Ц“ декларација у датотеци заглавља обавештава компајлер да користи везу у стилу Ц за функцију, чинећи је позвати из Ц кода. Користите овај код да пронађете област круга тако што ћете је сачувати у „цирцле.х“ датотеци. Када сачувате ову датотеку заглавља, све што треба да урадите је да је укључите као датотеку заглавља у Ц++ програм и извршите жељену функцију. Следи Ц код који израчунава површину круга. Датотека „маин.ц“ укључује Ц++ заглавље и директно позива „Цирцле_Цареа“. Погледајте следећи код:

#инцлуде 'цирцле.х'

инт главни ( ) {

дупло радс = 5.0 ;

дупло области = Цирцле_ЦАреа ( радс ) ;

принтф ( „ Област круга је:  %.2ф ' , области ) ;

повратак 0 ;

}

Овај једноставан Ц програм израчунава и штампа површину круга користећи функцију која је дефинисана у претходној датотеци под називом „цирцле.х“. Хајде да разложимо код:

#инцлуде 'цирцле.х'

Овај ред укључује садржај датотеке заглавља „цирцле.х“ у програму. Датотека заглавља вероватно садржи декларације функција или макрое који су повезани са прорачунима кругова.

инт главни ( ) {

Извршење програма почиње са главном функцијом, улазном тачком за Ц програме.

дупло радс = 5.0 ;

Променљива радс типа доубле је декларисана и додељена јој је вредност 5.0. Ова променљива вероватно представља полупречник круга.

дупло области = Цирцле_ЦАреа ( радс ) ;

Функција под називом „Цирцле_Цареа“ се позива са радијусом радс као аргументом и резултат се чува у променљивој области.

принтф ( „Површина круга је: %.2ф ' , области ) ;

Резултат се штампа на конзоли помоћу „принтф“. Низ „Област круга је: %.2ф\н“ је стринг формата са чуваром места „%ф“ за вредност површине. „.2“ у „%.2ф“ означава да се приказују само две децимале.

повратак 0 ;

Главна функција се завршава враћањем 0 што указује на успешно извршење програма у оперативном систему.

Укратко, датотека заглавља декларише функцију са Ц везом, а имплементациони фајл дефинише логику за израчунавање површине круга. Ово раздвајање омогућава да се код користи у Ц и Ц++ програмима. Погледајте излаз кода који је дат на следећој слици:

Као што можете видети на излазу, израчуната површина круга је 78,54 што је израчунавање површине = 3,14 * 5 * 5 = 78,54. Функција за израчунавање површине је дефинисана у датотеци заглавља “цирцле.х” која се затим позива у Ц++ датотеци уз помоћ екстерна “Ц”.

Закључак

У овом водичу смо вас водили кроз процес интеграције Ц++-а у ваше Ц програме. Интеграција Ц++ функционалности у Ц кодне базе захтева пажљиво разматрање показивача, мењања имена и датотека заглавља двоструке намене. Наведени примери илуструју практичан приступ постизању ове интеграције. Сада када сте видели како да повежете ова два програмска језика, имате више алата. Откључавање моћи Ц++-а док радите са Ц-ом могло би вашим пројектима дати потпуно нови ниво функционалности.