關於g 和gcc的一些誤區

2021-07-25 19:29:59 字數 1244 閱讀 5025

關於g++和gcc的誤區:

1)認為g++只能編譯c++ gcc只能編譯c其實,都可以的,但應該注意

a. .c檔案g++把它當成c++程式,gcc當成c程式  .cpp檔案 都認為是c++程式,c++是c的超集

b. 編譯階段g++會呼叫gcc,對於c++檔案,兩者是等價的,但gcc不能自動和c++的庫鏈結,只能使用g++

2)gcc不會定義 __cplusplus巨集,其實只要是.cpp檔案用gcc或者g++編譯都會定義

3)編譯只能使用gcc,鏈結只能使用g++ 其實,編譯階段g++和gcc等價,鏈結可以使用g++或者gcc-lstdc

4)認為extern "c" 和gcc或者g++有關係,其實無論哪個在使用extern "c"的時候都會採用c的規範來約束

extern

"c"void

cppprintf

(void

);

#include

#include

"me.h"

using

namespace

std;

void

cppprintf

(void

)

#include

"me.h"

int

main

(void

)

先在me.h中加上extern "c" 分別用

g++ -s me.cpp 編譯和  less me.c檢視 

gcc -s me.cpp 編譯和  less me.c檢視 ,可以發現都包含 .type cppprintf,@function也就是採用c的規範

去掉extern "c" 再分別使用

g++ -s me.cpp 編譯和  less me.c檢視 

gcc -s me.cpp 編譯和  less me.c檢視 ,可以發現都包含 .type  _z9cppprintfv,@function也就是採用c++的規範

所以,是編譯是無關的

一些關於攝影的誤區

1.微距鏡頭只能來拍靜物 是專為拍攝極近距而設的,但有人說它於正常拍攝時會有質素的下降或迷信只能用在翻拍或微距拍攝用途上。其實,根據一些光學測試,無論是以1 1或1 2和1 50比例拍攝時,微距鏡頭的解像在大部份光圈下都有極優異的表現 而1 49或1 50時的測試,解像度比其它同等焦距的非微距鏡頭高...

關於gcc的一些學習

參考部落格 c原始檔到可執行檔案共經歷了4個過程。包括預處理 編譯 彙編 鏈結。為了方便好記,可以採用記錄單條編譯命令的方式,這樣可以把命令也一起記下來。比如 esco gcc e hello.c hello.i 編譯器將hello.c預處理結果輸出 hello.i 檔案。這是我本地的hello.c...

關於async和await的一些誤區例項詳解

微軟官方的msdn上說async和await是 非同步 但是不少人 包括筆者自己 都有一些誤區需要澄清 為什麼await語句之後沒有執行?不是非同步嗎?先舉乙個示例 如下 public partial class form1 form public form1 private async void ...