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

隨筆-20  評論-0  文章-0  trackbacks-0

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

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

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

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

兩者都可以,但是請注意:
1.后綴為.c的,gcc把它當(dāng)作是C程序,而g++當(dāng)作是c++程序;后綴為.cpp的,兩者都會認為是c++程序,注意,雖然c++是c的超集,但是兩者對語法的要求是有區(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的語法規(guī)則,OK,沒問題,但是,一旦把后綴改為cpp,立刻報三個錯:“printString未定義”;
“cannot convert `char**' to `char*”;
”return-statement with no value“;
分別對應(yīng)前面紅色標(biāo)注的部分。可見C++的語法規(guī)則更加嚴謹一些。
2.編譯階段,g++會調(diào)用gcc,對于c++代碼,兩者是等價的,但是因為gcc命令不能自動和C++程序使用的庫聯(lián)接,所以通常用g++來完成鏈接,為了統(tǒng)一起見,干脆編譯/鏈接統(tǒng)統(tǒng)用g++了,這就給人一種錯覺,好像cpp程序只能用g++似的。
 
誤區(qū)二:gcc不會定義__cplusplus宏,而g++會

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

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

實際上并無關(guān)系,無論是gcc還是g++,用extern "c"時,都是以C的命名方式來為symbol命名,否則,都以c++方式命名。試驗如下:
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) 評論(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>
            亚洲精品精选| 中日韩男男gay无套| 欧美成人一区二区三区在线观看| 欧美中文字幕视频在线观看| 欧美中文字幕在线播放| 久久男人av资源网站| 麻豆91精品91久久久的内涵| 另类天堂av| 亚洲电影免费观看高清完整版在线| 欧美韩国日本一区| 亚洲国产精品一区| 夜夜嗨av一区二区三区四区| 亚洲一区二区三区四区五区午夜| 午夜久久久久久| 久久久噜噜噜久久| 欧美激情一区二区| 国产精品国产三级国产专区53| 国产精品欧美激情| 国产在线精品一区二区夜色| 亚洲国产精品黑人久久久| 99国产精品私拍| 亚洲摸下面视频| 久久久久一区二区三区| 亚洲国产精品悠悠久久琪琪| 在线中文字幕日韩| 欧美有码在线观看视频| 欧美国产视频日韩| 国产精品区免费视频| 黄网站免费久久| 亚洲狼人精品一区二区三区| 午夜精品福利视频| 久久综合久久久| 亚洲精品日韩精品| 性8sex亚洲区入口| 欧美第一黄网免费网站| 国产精品区二区三区日本 | 欧美 日韩 国产 一区| 亚洲国产精品久久久久婷婷884 | 欧美电影免费观看大全| 亚洲老板91色精品久久| 欧美一区日本一区韩国一区| 蜜臀久久99精品久久久久久9| 欧美日韩在线观看一区二区| 国产亚洲一区在线播放| 在线视频精品一区| 噜噜噜91成人网| 亚洲蜜桃精久久久久久久| 欧美一区二区三区播放老司机| 牛牛精品成人免费视频| 国产亚洲精品自拍| 在线亚洲免费| 欧美xx69| 欧美亚洲一区在线| 欧美日一区二区三区在线观看国产免 | 欧美亚洲免费电影| 91久久中文| 久久久久高清| 国产精品色婷婷| 亚洲乱码久久| 美国十次成人| 亚洲欧美日韩在线综合| 欧美日韩国产色综合一二三四| 在线播放国产一区中文字幕剧情欧美| 亚洲系列中文字幕| 亚洲激情亚洲| 久久综合色天天久久综合图片| 国产精品视频精品视频| 日韩一区二区久久| 亚洲成人在线视频播放| 性欧美激情精品| 国产精品成人观看视频免费| 日韩一级在线观看| 亚洲国产一区二区在线| 久久精品在这里| 国产欧美在线观看| 亚洲欧美日韩精品久久亚洲区| 最新高清无码专区| 欧美电影免费观看高清| 在线观看视频日韩| 久久视频一区| 欧美在线视频不卡| 国产三级欧美三级日产三级99| 亚洲尤物视频网| av成人天堂| 国产精品mm| 亚洲深夜福利网站| 99在线观看免费视频精品观看| 欧美黑人在线观看| 亚洲理伦在线| 亚洲精品日韩精品| 欧美黄色免费| 亚洲最新视频在线| 亚洲激情欧美激情| 欧美精品一区在线发布| 一区二区三区欧美激情| 日韩视频中文| 欧美亚洲成人精品| 欧美一级视频精品观看| 亚洲欧美国产一区二区三区| 国产毛片一区二区| 久久国产精品一区二区三区| 香蕉久久精品日日躁夜夜躁| 国产日韩欧美精品综合| 久久久久久久高潮| 久久全国免费视频| 亚洲激情欧美激情| 亚洲精品久久久久中文字幕欢迎你| 欧美成人久久| 中文有码久久| 亚洲欧美激情一区| 黑人操亚洲美女惩罚| 欧美 亚欧 日韩视频在线| 欧美电影在线播放| 亚洲午夜av在线| 亚洲摸下面视频| 国内精品视频久久| 亚洲二区三区四区| 欧美久色视频| 性色av一区二区三区红粉影视| 亚洲欧美在线网| 精品成人一区二区三区四区| 亚洲高清电影| 欧美四级在线观看| 久久精品男女| 乱中年女人伦av一区二区| 亚洲精品午夜精品| 亚洲综合999| 今天的高清视频免费播放成人 | 一区在线视频| 亚洲国产精品www| 欧美日韩综合精品| 久久久噜噜噜久久中文字幕色伊伊| 久久婷婷av| 正在播放欧美视频| 欧美一级电影久久| 亚洲精品裸体| 亚洲自拍偷拍福利| 亚洲激情在线| 亚洲一区二区三区777| 影音先锋久久久| 一区二区91| **网站欧美大片在线观看| 日韩一本二本av| 精品成人国产| 中文在线不卡| 激情亚洲网站| 一区二区欧美国产| 亚洲第一中文字幕在线观看| 亚洲精品欧美| 在线观看亚洲视频| 亚洲视频观看| 亚洲欧洲免费视频| 午夜在线a亚洲v天堂网2018| 亚洲精品一区二区三区婷婷月 | 亚洲视频精选在线| 久久久久九九九| 亚洲欧美www| 女女同性女同一区二区三区91| 欧美一区高清| 欧美日韩视频免费播放| 欧美gay视频| 国产精品资源在线观看| 亚洲黄色有码视频| 激情久久久久久久| 亚洲深夜福利网站| 日韩天堂在线视频| 久久久精品一区二区三区| 亚洲欧美久久久| 欧美激情精品久久久久| 久久青草久久| 国产精品一区二区你懂的| 亚洲欧洲一区二区三区久久| 一区视频在线播放| 亚洲免费伊人电影在线观看av| 亚洲精品影视在线观看| 久久夜色精品国产噜噜av| 久久黄金**| 国产精品影院在线观看| 一本久道久久久| 一区二区av| 欧美成人免费一级人片100| 久久久久久一区| 国产欧美日韩不卡| 亚洲性线免费观看视频成熟| 一区二区三区四区五区精品| 欧美肥婆bbw| 亚洲国产成人精品视频| 亚洲国产99| 老巨人导航500精品| 老色鬼精品视频在线观看播放| 国产精品一区二区女厕厕| 亚洲性夜色噜噜噜7777| 亚洲欧美一级二级三级| 欧美午夜在线视频| 夜夜爽www精品| 亚洲综合第一页| 国产精品v欧美精品v日本精品动漫| 日韩亚洲视频在线| 亚洲视频免费| 国产精品久久久久国产精品日日|