青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-20  評(píng)論-0  文章-0  trackbacks-0

gcc和g++都是GNU(組織)的一個(gè)編譯器。

誤區(qū)一:gcc只能編譯c代碼,g++只能編譯c++代碼
兩者都可以,但是請(qǐng)注意:
1.后綴為.c的,gcc把它當(dāng)作是C程序,而g++當(dāng)作是c++程序;后綴為.cpp的,兩者都會(huì)認(rèn)為是c++程序,注意,雖然c++是c的超集,但是兩者對(duì)語(yǔ)法的要求是有區(qū)別的。C++的語(yǔ)法規(guī)則更加嚴(yán)謹(jǐn)一些。
2.編譯階段,g++會(huì)調(diào)用gcc,對(duì)于c++代碼,兩者是等價(jià)的,但是因?yàn)間cc命令不能自動(dòng)和C++程序使用的庫(kù)聯(lián)接,所以通常用g++來完成鏈接,為了統(tǒng)一起見,干脆編譯/鏈接統(tǒng)統(tǒng)用g++了,這就給人一種錯(cuò)覺,好像cpp程序只能用g++似的。
 
誤區(qū)二:gcc不會(huì)定義__cplusplus宏,而g++會(huì)
實(shí)際上,這個(gè)宏只是標(biāo)志著編譯器將會(huì)把代碼按C還是C++語(yǔ)法來解釋,如上所述,如果后綴為.c,并且采用gcc編譯器,則該宏就是未定義的,否則,就是已定義。
 
誤區(qū)三:編譯只能用gcc,鏈接只能用g++
嚴(yán)格來說,這句話不算錯(cuò)誤,但是它混淆了概念,應(yīng)該這樣說:編譯可以用gcc/g++,而鏈接可以用g++或者gcc -lstdc++。因?yàn)間cc命令不能自動(dòng)和C++程序使用的庫(kù)聯(lián)接,所以通常使用g++來完成聯(lián)接。但在編譯階段,g++會(huì)自動(dòng)調(diào)用gcc,二者等價(jià)。

gcc和g++的區(qū)別

我們?cè)诰幾gc/c++代碼的時(shí)候,有人用gcc,有人用g++,于是各種說法都來了,譬如c代碼用gcc,而c++代碼用g++,或者說編譯用 gcc,鏈接用g++,一時(shí)也不知哪個(gè)說法正確,如果再遇上個(gè)extern "C",分歧就更多了,這里我想作個(gè)了結(jié),畢竟知識(shí)的目的是令人更清醒,而不是更糊涂。
 
誤區(qū)一:gcc只能編譯c代碼,g++只能編譯c++代碼

兩者都可以,但是請(qǐng)注意:
1.后綴為.c的,gcc把它當(dāng)作是C程序,而g++當(dāng)作是c++程序;后綴為.cpp的,兩者都會(huì)認(rèn)為是c++程序,注意,雖然c++是c的超集,但是兩者對(duì)語(yǔ)法的要求是有區(qū)別的,例如:
#include <stdio.h>
int main(int argc, char* argv[]) {
   if(argv == 0) return;
   printString(argv);
   return;
}
int printString(char* string) {
  sprintf(string, "This is a test.\n");
}
如果按照C的語(yǔ)法規(guī)則,OK,沒問題,但是,一旦把后綴改為cpp,立刻報(bào)三個(gè)錯(cuò):“printString未定義”;
“cannot convert `char**' to `char*”;
”return-statement with no value“;
分別對(duì)應(yīng)前面紅色標(biāo)注的部分。可見C++的語(yǔ)法規(guī)則更加嚴(yán)謹(jǐn)一些。
2.編譯階段,g++會(huì)調(diào)用gcc,對(duì)于c++代碼,兩者是等價(jià)的,但是因?yàn)間cc命令不能自動(dòng)和C++程序使用的庫(kù)聯(lián)接,所以通常用g++來完成鏈接,為了統(tǒng)一起見,干脆編譯/鏈接統(tǒng)統(tǒng)用g++了,這就給人一種錯(cuò)覺,好像cpp程序只能用g++似的。
 
誤區(qū)二:gcc不會(huì)定義__cplusplus宏,而g++會(huì)

實(shí)際上,這個(gè)宏只是標(biāo)志著編譯器將會(huì)把代碼按C還是C++語(yǔ)法來解釋,如上所述,如果后綴為.c,并且采用gcc編譯器,則該宏就是未定義的,否則,就是已定義。
 
誤區(qū)三:編譯只能用gcc,鏈接只能用g++

嚴(yán)格來說,這句話不算錯(cuò)誤,但是它混淆了概念,應(yīng)該這樣說:編譯可以用gcc/g++,而鏈接可以用g++或者gcc -lstdc++。因?yàn)間cc命令不能自動(dòng)和C++程序使用的庫(kù)聯(lián)接,所以通常使用g++來完成聯(lián)接。但在編譯階段,g++會(huì)自動(dòng)調(diào)用gcc,二者等價(jià)。
 
誤區(qū)四:extern "C"與gcc/g++有關(guān)系

實(shí)際上并無關(guān)系,無論是gcc還是g++,用extern "c"時(shí),都是以C的命名方式來為symbol命名,否則,都以c++方式命名。試驗(yàn)如下:
me.h
extern "C" void CppPrintf(void);
 
me.cpp:
#include <iostream>
#include "me.h"
using namespace std;
void CppPrintf(void)
{
     cout << "Hello\n";
}
 
test.cpp:
#include <stdlib.h>
#include <stdio.h>
#include "me.h"        
int main(void)
{
    CppPrintf();
    return 0;
}
 
1. 先給me.h加上extern "C",看用gcc和g++命名有什么不同

[root@root G++]# g++ -S me.cpp
[root@root G++]# less me.s
.globl _Z9CppPrintfv        //注意此函數(shù)的命名
        .type   CppPrintf, @function
[root@root GCC]# gcc -S me.cpp
[root@root GCC]# less me.s
.globl _Z9CppPrintfv        //注意此函數(shù)的命名
        .type   CppPrintf, @function
完全相同!
               
2. 去掉me.h中extern "C",看用gcc和g++命名有什么不同

[root@root GCC]# gcc -S me.cpp
[root@root GCC]# less me.s
.globl _Z9CppPrintfv        //注意此函數(shù)的命名
        .type   _Z9CppPrintfv, @function
[root@root G++]# g++ -S me.cpp
[root@root G++]# less me.s
.globl _Z9CppPrintfv        //注意此函數(shù)的命名
        .type   _Z9CppPrintfv, @function
完全相同!
posted on 2008-04-14 15:42 Magic 閱讀(356) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美sm重口味系列视频在线观看| 久久大综合网| 亚洲国内自拍| 欧美一区二区三区久久精品茉莉花| 日韩视频一区二区三区| 久久一区二区三区国产精品| 性视频1819p久久| 欧美日韩蜜桃| 亚洲经典自拍| 91久久综合| 麻豆国产精品一区二区三区| 久热精品视频在线| 狠狠色狠狠色综合人人| 欧美一二三区在线观看| 香蕉视频成人在线观看| 国产精品视频免费观看www| 夜夜嗨av一区二区三区网站四季av| 亚洲精品你懂的| 欧美成人第一页| 欧美激情成人在线| 亚洲国产老妈| 欧美大片一区二区| 91久久亚洲| 一区二区三区www| 欧美精品国产精品日韩精品| 亚洲精品欧洲精品| 亚洲一二三区在线| 国产精品久久久久久久免费软件| 99精品视频免费在线观看| 亚洲图片在区色| 国产精品久久久久久久7电影| 一本色道久久88亚洲综合88| 亚洲综合首页| 国产欧美日韩三级| 欧美怡红院视频| 欧美大片专区| 在线亚洲观看| 国产精品女主播| 香蕉视频成人在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 在线日韩av永久免费观看| 欧美成va人片在线观看| 日韩一区二区久久| 久久99在线观看| 怡红院精品视频| 欧美日韩另类视频| 午夜精品福利在线观看| 免费在线看一区| 亚洲美女中出| 国产欧美精品xxxx另类| 久久免费视频在线| 亚洲美女免费视频| 羞羞漫画18久久大片| 激情视频一区二区| 欧美激情一区二区三区高清视频| 亚洲一区中文| 欧美va天堂va视频va在线| 亚洲午夜久久久| 国内综合精品午夜久久资源| 欧美第一黄网免费网站| 亚洲一区二区三区精品在线观看 | 久久精品欧美| 最新高清无码专区| 久久成年人视频| 亚洲精品中文字| 国产农村妇女毛片精品久久麻豆| 久久一区二区三区av| 亚洲午夜免费福利视频| 欧美成年人网| 久久黄色影院| 一区二区欧美国产| 精品动漫3d一区二区三区| 欧美日韩一级视频| 美女图片一区二区| 欧美在线|欧美| 在线一区二区三区四区| 欧美国产成人在线| 久久精品五月| 亚洲摸下面视频| 亚洲精品一二三| 红杏aⅴ成人免费视频| 欧美性色aⅴ视频一区日韩精品| 老司机午夜免费精品视频| 亚洲欧美中文另类| 一区二区三区欧美在线| 亚洲激情第一区| 欧美freesex交免费视频| 久久精品日产第一区二区| 宅男噜噜噜66国产日韩在线观看| 亚洲国产欧美不卡在线观看| 国产午夜精品一区二区三区视频 | 狠狠色综合色区| 国产精品视频免费一区| 欧美日韩和欧美的一区二区| 免费在线观看成人av| 久久久之久亚州精品露出| 欧美与欧洲交xxxx免费观看| 亚洲综合视频在线| 亚洲一区999| 一区二区三区欧美| 一区二区三区你懂的| 一本色道久久88亚洲综合88| 亚洲日本免费| 亚洲精品免费一二三区| 亚洲国产精品成人久久综合一区| 免费在线一区二区| 欧美大色视频| 欧美激情亚洲激情| 亚洲高清视频在线| 亚洲黄色av一区| 亚洲精品国产精品国自产观看浪潮 | 亚洲欧美日韩在线高清直播| 一区二区三区高清在线观看| 99国产成+人+综合+亚洲欧美| 91久久精品一区| 一区二区欧美在线观看| 亚洲性感美女99在线| 亚洲专区一区| 欧美在线一级va免费观看| 欧美一区二区三区免费看 | 久久国产精品亚洲77777| 欧美一级视频免费在线观看| 久久久www成人免费精品| 久久亚洲一区二区| 欧美成人综合在线| 欧美视频一区二区三区在线观看| 国产精品免费区二区三区观看| 国产午夜精品理论片a级大结局 | 亚洲黄色小视频| 9久草视频在线视频精品| 亚洲图片欧洲图片av| 久久av一区二区三区漫画| 男人插女人欧美| 欧美色综合网| 国产在线精品一区二区中文| 136国产福利精品导航网址| 亚洲精品色图| 欧美一区二区久久久| 另类av一区二区| 日韩一区二区电影网| 欧美在线视频免费播放| 欧美高清在线一区| 国产精品永久免费观看| 亚洲第一综合天堂另类专| 在线一区亚洲| 久久综合久久美利坚合众国| 亚洲人成啪啪网站| 欧美亚洲网站| 欧美三级乱人伦电影| 在线观看亚洲精品视频| 一区二区欧美视频| 免费成人在线观看视频| 一区二区三区日韩精品| 免播放器亚洲| 国产欧美日韩专区发布| 99精品视频免费观看视频| 久久精品亚洲热| 日韩视频亚洲视频| 麻豆精品精华液| 国产主播一区二区三区| 亚洲一区在线视频| 亚洲二区免费| 久久久噜噜噜久噜久久| 国产欧美日韩不卡免费| 一区二区三区高清视频在线观看| 蜜臀va亚洲va欧美va天堂| 午夜欧美不卡精品aaaaa| 欧美日韩精品免费观看视一区二区 | 欧美日韩精品一区二区天天拍小说| 国产一级揄自揄精品视频| 99精品免费网| 91久久久在线| 猫咪成人在线观看| 伊人色综合久久天天五月婷| 欧美一区二区国产| 一区二区欧美国产| 欧美日韩亚洲一区二区三区四区| 1769国内精品视频在线播放| 久久精品亚洲精品| 午夜激情久久久| 国产欧美日韩视频一区二区| 亚洲欧美日韩一区二区三区在线| 日韩亚洲欧美一区| 欧美日本久久| 日韩视频在线永久播放| 亚洲国产精品女人久久久| 久久一区精品| 亚洲国产一区二区三区青草影视| 蜜桃av一区二区| 久久久国际精品| 亚洲大片精品永久免费| 欧美不卡视频一区| 麻豆乱码国产一区二区三区| 亚洲国产高清aⅴ视频| 另类av一区二区| 欧美fxxxxxx另类| 99精品国产99久久久久久福利| 亚洲精品乱码久久久久久按摩观| 欧美日韩成人一区二区三区| 99www免费人成精品|