關於編譯的一些小知識

2021-07-04 14:32:36 字數 1540 閱讀 6032

gnu編譯器

g++編譯

c++程式:

在windows,進入源**所在的路徑下,在命令列中輸入:

g++ -o test.exe test.cpp
將test.cpp

編譯生成

test.exe

可執行檔案,如果沒有

-o test.exe

選項,預設生成

a.exe

在linux,進入源**所在的路徑下,在命令列中輸入:

g++ -o test test.cpp
將test.cpp

編譯生成

test

可執行檔案(

linux

下檔案沒有字尾名,通過檔案屬性和執行許可權識別),預設生成

a.out

,可能需要在命令尾部輸入

-std=c++0x

來支援c++11

標準注意:可新增-wall選項來開啟所有警告,-w來忽略所有警告(嚴重不推薦)

微軟visual studio

編譯器編譯c++程式:

在windows,開始

->

所有程式

->visual studio->visual studio tools->

執行vs

開發人員命令提示,在命令列中輸入:

cl  /ehsc test.cpp
生成test.exe

檔案(/ehsc

引數來開啟標準異常)

在linux

visual studio

編譯器

注意:可新增/w4來開啟所有警告

分離編譯器編譯原始檔的過程

linux下

gcc分步編譯

hello world為例

由上圖可知,hello的c檔案到可執行檔案經歷了預處理、編譯、彙編、鏈結等幾個過程,下面進行分步編譯過程:

.c檔案經過預處理生成.i檔案(將#include裡面的內容新增到.c檔案中形成.i檔案)

gcc -o hello.i -e hello.c
.i檔案編譯生成.s彙編檔案

gcc -o hello.s -s hello.i
.s彙編檔案匯編生成.o目標檔案(二進位制檔案)

gcc -o hello.o -c hello.s
.o目標檔案鏈結生成可執行檔案(鏈結一些動態靜態庫)

gcc -o hello hello.o
至此生成hello的可執行檔案

關於switch的一些小知識

之前給大家介紹過關於if的一些小用法,在c語言中還有另外乙個條件判斷語句,那就是switch語句,今天我就給大家介紹一些關於switch的用法。首先,我們先聊聊為什麼要在已經擁有if語句的情況下還要再建立switch語句。那就是因為if語句雖然可以實現多分支結構,但是比較複雜 不夠直觀,而switc...

關於C 的一些小知識

不行,可以這樣理解 static修飾的方法可以直接用類名呼叫 非static修飾的方法必須用類new出物件才能呼叫 當我們用類名直接呼叫時,可能這個類的物件並沒有new。如果這時候static方法裡呼叫非static的方法就會出現空指標異常,當然這種錯誤編譯時就不會通過。錯誤 演示 1 class ...

關於Integer物件的一些小知識

之前有看見乙個題,題就不說了,最終結論是 integer物件在建立的時候,對於 128 127數字將會不會建立新的物件,而是直接應用常量池中integer物件。然後最近,在stackoverflow看到乙個比較有意思的問題 public class test public static test g...