日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数

發布時間:2024/3/24 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 C語言 gcc 介紹 C 語言編譯 main接受參數

發布時間:2020-07-19 20:18:28

來源:51CTO

閱讀:1216

作者:990487026

1第一個c語言的hello world

1.1include頭文件包含

頭文件包含,寫法#include,

1.2main函數

這個就是C語言程序的入口,所有的C程序都是從main開始執行,一個C的源程序必須有一個main函數,也只能有一個main函數

1.3注釋

//注釋一行

/* */代表塊注釋,可以注釋多行代碼

1.4{}括號和代碼塊

代表一個代碼單元

1.5聲明

C語言規定,所有的變量和函數必須先聲明,然后才能使用.

1.6C語言自定義名字的要求

可以使用大小寫字母,下劃線,數字,但第一個字母必須是字母或者下劃線

字母區分大小寫

變量名最好用英文,而且要有所含義,通過變量的名稱就能猜測變量的意思。

1.7return語句

在C語言當中任何函數遇到return代表這個函數停止,當main函數遇到return,代表整個程序退出

return代表函數的返回值,如果返回類型是void,可以直接寫return,而不需要返回任何值

2C語言的編譯

2.1編譯過程

2.2gcc編譯選項

-o代表指定輸出文件名

-E代表預編譯

預編譯處理include的本質就是簡單的將include中的文件替換到c文件中

如果include包含的頭文件在系統目錄下,那么就用#include <>,如果包含的文件在當前目錄下,那么用#inlclude“”

-S代表匯編

-c代表編譯

Linux C學習

1,編寫一個helloworld程序vim??hello.c

#include?"stdio.h"

int?main(){

printf("Hello?World!\n\n");

return?0;

}

一步到位編譯執行chunli@pc0003:/tmp/C$?gcc?helloworld.C

chunli@pc0003:/tmp/C$?./a.out

Hello?World!

C編譯過程chunli@pc0003:/tmp/C$?gcc?--help

Usage:?gcc?[options]?file...

Options:

-pass-exit-codes?????????Exit?withhighest?error?code?from?a?phase

--help???????????????????Display?this?information

--target-help????????????Display?target?specific?commandline?options

--help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]

Display?specific?types?of?command?line?options

(Use?'-v?--help'?todisplay?command?line?options?of?sub-processes)

--version????????????????Display?compiler?version?information

-dumpspecs???????????????Display?all?of?the?built?in?specstrings

-dumpversion?????????????Display?the?version?of?thecompiler

-dumpmachine?????????????Display?the?compiler's?targetprocessor

-print-search-dirs???????Display?the?directories?in?thecompiler's?search?path

-print-libgcc-file-name??Displaythe?name?of?the?compiler's?companion?library

-print-file-name=??Display?the?full?path?to?library?

-print-prog-name=?Display?the?full?path?to?compiler?component?

-print-multiarch?????????Displaythe?target's?normalized?GNU?triplet,?used?as

a?component?in?the?library?path

-print-multi-directory???Displaythe?root?directory?for?versions?of?libgcc

-print-multi-lib?????????Display?the?mapping?between?commandline?options?and

multiple?library?search?directories

-print-multi-os-directory?Display?the?relative?path?to?OS?libraries

-print-sysroot???????????Display?the?target?librariesdirectory

-print-sysroot-headers-suffix?Display?the?sysroot?suffix?used?to?findheaders

-Wa,???????????Pass?comma-separated??on?to?the?assembler

-Wp,???????????Pass?comma-separated??on?to?the?preprocessor

-Wl,???????????Pass?comma-separated??on?to?the?linker

-Xassembler????????Pass??on?tothe?assembler

-Xpreprocessor?????Pass??on?tothe?preprocessor

-Xlinker???????????Pass??onto?the?linker

-save-temps??????????????Do?not?delete?intermediate?files

-save-temps=????????Donot?delete?intermediate?files

-no-canonical-prefixes???Do?notcanonicalize?paths?when?building?relative

prefixes?to?other?gcc?components

-pipe????????????????????Use?pipes?rather?thanintermediate?files

-time????????????????????Time?the?execution?of?eachsubprocess

-specs=???????????Override?built-in?specs?with?the?contents?of?

-std=?????????Assume?that?the?input?sources?are?for?

--sysroot=????Use?as?the?root?directory?for?headers

and?libraries

-B???????????Add?to?the?compiler's?search?paths

-v???????????????????????Display?the?programsinvoked?by?the?compiler

-###?????????????????????Like?-v?but?options?quotedand?commands?not?executed

-E???????????????????????Preprocess?only;?do?notcompile,?assemble?or?link

-S???????????????????????Compile?only;?do?notassemble?or?link

-c???????????????????????Compile?and?assemble,but?do?not?link

-o?????????????????Place?the?output?into

-pie?????????????????????Create?a?positionindependent?executable

-shared??????????????????Create?a?shared?library

-x?????????????Specify?the?language?of?thefollowing?input?files

Permissible?languages?include:?c?c++?assembler?none

'none'?means?revert?to?the?default?behavior?of

guessing?the?language?based?on?the?file's?extension

Options?starting?with?-g,?-f,?-m,?-O,?-W,?or?--param?areautomatically

passed?on?to?thevarious?sub-processes?invoked?by?gcc.??Inorder?to?pass

other?options?on?tothese?processes?the?-W?options?must?be?used.

For?bug?reporting?instructions,?please?see:

.

源C代碼程序hello.c

第一步:預編譯,把include文件的內容原封不動的放到源代碼中gcc -o hello.i? hello.c

第二步:匯編,把預編譯的結果變成匯編代碼

第三步:編譯,把匯編的結果變成二進制文件

第四步:鏈接,把編譯的二進制文件與系統庫連接起來chunli@pc0003:/tmp/C$?gcc?-o?hello.i?-E?hello.c

chunli@pc0003:/tmp/C$?gcc?-o?hello.s?-S?hello.c

chunli@pc0003:/tmp/C$?gcc?-o?hello.o?-c?hello.s

chunli@pc0003:/tmp/C$?gcc?-o?hello??????hello.o

chunli@pc0003:/tmp/C$?./hello

Hello?World!

查看鏈接的庫chunli@pc0003:/tmp/C$?ldd?hello

linux-vdso.so.1=>??(0x00007fff217f8000)

libc.so.6?=>/lib/x86_64-linux-gnu/libc.so.6?(0x00007f5340914000)

/lib64/ld-linux-x86-64.so.2(0x00005654d9706000)

調用系統的程序vim?hello.c

#include?"stdio.h"

#include?"stdlib.h"

int?main(){

system("cat?hello.c");

printf("Hello?World!\n\n");

return?0;

}

編譯gcc hello.c

執行./a.out

輸出:#include?"stdio.h"

#include?"stdlib.h"

int?main(){

system("cat?hello.c");

printf("Hello?World!\n\n");

return?0;

}

Hello?World!

2.3printf執行原理

向屏幕輸出的其他方式:chunli@pc0003:/tmp/C$?cat?my_printf.c

#include?

#include?

#include?

int?main()

{

int?i?=?99;

printf("i=%d?\n",i/0x10);

fwrite("abc\n",1,2,stdout);

//write("abc\n",4,STDOUT_FILENO,"abc");

return?;

}

C語言版計算器#include?

#include?

int?main(int?argc,char?*args[])

{

if(argc?<3?)

printf("請輸入兩個整數!\n");

else

{

int?a?=?atoi(args[1]);

int?b?=?atoi(args[2]);

int?c?=?a+b;

printf("兩個數的和是?%d?\n",c);

}

return?0;

}

使用方法chunli@pc0003:/tmp/C$?!gcc

gcc?calc.c

chunli@pc0003:/tmp/C$?./a.out??3?3

兩個數的和是?6

chunli@pc0003:/t

總結

以上是生活随笔為你收集整理的系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。