系统开发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接受参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 已知坐标求方位角_【干货】RTK视频实操
- 下一篇: 2017-2018-2 20165237