第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么我們需要在C ++中使用extern“C”{#include <foo.h>}?

為什么我們需要在C ++中使用extern“C”{#include <foo.h>}?

C++ C
慕容3067478 2019-08-26 10:03:47
為什么我們需要在C ++中使用extern“C”{#include <foo.h>}?為什么我們需要使用:extern "C" {#include <foo.h>}特別:我們什么時(shí)候應(yīng)該使用它?在編譯器/鏈接器級(jí)別發(fā)生了什么,需要我們使用它?如何在編譯/鏈接方面解決了需要我們使用它的問題?
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

C和C ++在表面上相似,但每個(gè)編譯成一組非常不同的代碼。當(dāng)您使用C ++編譯器包含頭文件時(shí),編譯器需要C ++代碼。但是,如果它是一個(gè)C頭,則編譯器需要將頭文件中包含的數(shù)據(jù)編譯為某種格式--C ++'ABI'或'應(yīng)用程序二進(jìn)制接口',因此鏈接器會(huì)扼殺。這比將C ++數(shù)據(jù)傳遞給期望C數(shù)據(jù)的函數(shù)更可取。

(為了深入了解真正的細(xì)節(jié),C ++的ABI通常會(huì)“破壞”它們的函數(shù)/方法的名稱,所以在printf()不將原型標(biāo)記為C函數(shù)的情況下進(jìn)行調(diào)用_Zprintf,C ++實(shí)際上會(huì)生成代碼調(diào)用,最后加上額外的廢話。 )

所以:extern "C" {...}當(dāng)包括ac頭時(shí)使用- 就這么簡單。否則,您將在編譯的代碼中出現(xiàn)不匹配,并且鏈接器將會(huì)阻塞。但是,對(duì)于大多數(shù)標(biāo)頭,您甚至不需要它,extern因?yàn)榇蠖鄶?shù)系統(tǒng)C標(biāo)頭已經(jīng)考慮到它們可能包含在C ++代碼中并且已經(jīng)包含extern它們的代碼。


查看完整回答
反對(duì) 回復(fù) 2019-08-26
  • 3 回答
  • 0 關(guān)注
  • 1667 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)