前段時(shí)間因?yàn)閷W(xué)習(xí)音視頻,從網(wǎng)上找了些c++的代碼,拷貝下來后發(fā)現(xiàn)編譯報(bào)錯(cuò)。

奇怪,iostream不是c++的標(biāo)準(zhǔn)庫里面的么,怎么還會(huì)找不到。
網(wǎng)上查了下,很多文章說是C++標(biāo)準(zhǔn)庫的選擇問題, 由于xcode10之后把C++標(biāo)準(zhǔn)庫從libstdc++改為了libc++導(dǎo)致的, 在build setting 的C++ Standard Library里面修改就可以解決。 但是實(shí)操下來發(fā)現(xiàn)并不能解決問題,因?yàn)椴恢缽哪膫€(gè)版本開始, build setting里面就已經(jīng)沒有C++ Standard Library 這個(gè)選項(xiàng)了。
這條路不行,那就繼續(xù)嘗試其他方法, 有說在system header search path里面添加c++標(biāo)準(zhǔn)庫的路徑可以解決問題的,我試了下發(fā)現(xiàn)也沒有用。
又有人說OC與C++混編,需要修改文件類型為m++,但是我這個(gè)文件里面沒有OC的代碼,改為m++肯定是沒用的。但是給了我一個(gè)方向,就是嘗試修改文件類型。 于是嘗試修改文件類型,發(fā)現(xiàn)改為c++ source之后,編譯成功了,看來這個(gè)問題是之前創(chuàng)建文件的時(shí)候選的是C,但是里面內(nèi)容是C++的,編譯器把c++代碼當(dāng)成了c的代碼去編譯,沒有鏈接c++標(biāo)準(zhǔn)庫導(dǎo)致。 為了避免后續(xù)再出錯(cuò),最好是把文件的后綴名也改下,c改為cpp, h改為hpp,這樣編譯器就不會(huì)認(rèn)錯(cuò)了。