C語言學習筆記-C語言概述與開發環境搭建


C語言學習筆記-C語言概述與開發環境搭建

C語言概述

什么是語言

人和人之間實現信息交流的工具,例如中國人和中國人使用中文進行交流。

什么是C語言

人和計算機交流也要使用語言,這種語言被稱為計算機編程語言。
人和人之間交流與人和計算機交流的區別就是計算機只要在編程語言的語法不出錯,邏輯不出錯的前提條件下會無條件服從人下達的指令
C語言是起源於貝爾實驗室,由丹尼斯·里奇和肯·湯普遜在開發Unix系統時被開發出來的一種計算機編程語言。

主流編程語言語言進化史

  • 機器語言
  • 匯編語言
  • 高級語言
    • 面向過程 C
    • 面向對象 C++/Java/Python/Go

C語言的特點

  • 優點
    • 運行效率高:執行速度快,僅次於匯編
    • 功能強大 (操作系統、驅動程序、中間件、數據庫 )
    • 編程自由 (語法檢查不嚴格)
    • 可移植性好:標准庫是可移植的(Windows,Linux,macOS)
  • 缺點
    • 開發效率低:實現功能的周期長
    • 嚴重依賴平台庫
    • 編程自由導致經驗不足時容易出錯
    • 不同的環境(Windows,Linux,macOS)編譯的結果(極少數)可能不同

學習C語言的理由

  • 大學理工科必修的編程語言
  • 學習數據結構、C++的基石
  • 高薪程序員面試、考試必備
  • 寫外掛、做黑客必須掌握的語言
  • 重要的基石語言:Unix,Linux,Windows,Java,C++,C#底層實現都是C語言實現的
  • 能快速學習其他編程語言

C語言的應用領域

  • 網站后台
  • 操作系統(Windows,Linux,macOS)
  • 多媒體應用
  • 驅動程序
  • 專門針對某個主題編寫強大的程序庫
  • 大型網絡游戲
  • 大型游戲引擎
  • C語言可以開發另外一個語言出來,例如 Python Object-C,Swift,PHP
  • 數據庫系統
  • 中間件(Redis,Nginx,Git)

主流語言的應用場景

  • 嵌入式:C包打天下,極其少量的匯編
  • Web開發:前台 HTML5,CSS3,JavaScript,后台主要是Java,Python,Go,PHP相關技術棧
  • 高性能服務器: Apache,Nginx,Memcached,Redis等等高性能服務器和數據庫都是純C開發
  • 分布式應用:Java,Go,Python
  • 游戲服務器:C/C++和Lua腳本
  • 並行計算:Java,Go,Erlang
  • 游戲引擎:C++和腳本
  • 移動開發:Java,C++,Swift
  • 桌面開發:C++,C#,QT+JavaScript都能開發出漂亮的桌面
  • 操作系統:C的天下
  • 虛擬機技術:QEMU,KVM,Xen都是純C開發的
  • 數據庫:C的天下
  • 編譯器:C/C++並存
  • 大數據:Java
  • 雲存儲:Java,Go

C語言概覽

C語言僅有32個關鍵字,9種控制語句,34種運算符,卻能完成無數的功能。

GCC環境變量配置

文件夾規划

D:\workspace\c\github\ittimeline\vs_code 存放使用visual studio code開發的C程序
D:\workspace\c\github\ittimeline\visual studio 2019 存放使用Visual Studio 2019開發的C程序

Visual Studio Code 下載、安裝

官網: https://code.visualstudio.com/
文檔:https://code.visualstudio.com/docs

C語言開發的流程

一個C語言程序的開發流程包含創建源文件、在源文件中編寫業務代碼,然后使用編譯器編譯,最后運行程序。

C語言開發HelloWorld

首先使用Visual Studio Code創建源文件helloworld.c,C語言的源文件都是以.c結尾。

如果使用記事本創建C語言的源文件,可能會看不到文件的后綴名。需要在Windows10系統中設置顯示文件擴展名
顯示文件擴展名

並在源文件中編輯如下內容

#include <stdio.h>
int main(int argc,char *argv[]){
    printf("windows10 & visual studio code hello world with c");
    return 0;
}

Visual Studio Code編輯helloworld.c
hello world

由於源文件helloworld.c的內容計算機無法直接識別,這里需要使用C語言的編譯器來將源文件helloworld.c的程序編譯成計算機能夠識別的指令。

GCC編譯器的安裝和配置

那么如何檢查系統的編譯環境呢?

首先使用win+r快捷鍵打開運行窗口,
運行窗口
然后輸入cmd,便可以啟動Windows終端。
打開Windows終端
然后在終端上輸入gcc -v便可以查看安裝的GCC編譯器版本,如果能夠輸出版本信息表示系統的編譯環境安裝完畢。
gcc -v

如果提示不是內部命令,也不是可以執行的程序,那么需要從官網下載和安裝QT(我這里提前安裝了QT5.13),QT中包含了gcc編譯器。並在系統環境變量中配置GCC的環境變量。

QT官網:https://www.qt.io/
QT各個版本下載地址:http://download.qt.io/archive/qt/

具體的配置方法就是在系統變量中新建GCC_HOME,其屬性值默認指向的是GCC所在的目錄C:\Qt\Qt5.13.0\Tools\mingw730_64
首先使用win+e快捷鍵打開文件資源管理器,然后找到此電腦,右鍵選擇屬性后會進入控制面板->系統和安全->系統的界面,然后找到高級系統設置
高級系統設置
在系統屬性中找到環境變量
環境變量

然后在環境變量中新增系統環境變量GCC_HOME,該變量的值就是gcc編譯器所在的目錄
GCC_HOME

然后在PATH環境變量中引用GCC_HOME的bin目錄即可。
PATH環境變量引用GCC_HOME

配置完成之后需要重新使用win+r打開運行窗口,然后輸入cmd打開Windows終端,並輸入gcc -v命令檢測當前安裝的GCC編譯器版本。
gcc.exe

當在Windows終端上執行gcc,系統會自動從GCC_HOME\bin目錄下查找並調用gcc.exe程序編譯C語言編寫的源文件

GCC編譯源文件

在編寫完C程序(helloworld.c)、安裝和配置gcc編譯器之后就可以使用gcc來編譯源文件

首先使用visual studio code打開helloworld.c所在的源文件的位置,快捷鍵是shift+alt+r
在文件資源管理器中顯示

此時會進入目錄D:\workspace\c\ittimeline\vs_code
D:\workspace\c\ittimeline\vs_code

然后在文件路徑地址欄輸入cmd后回車
cmd

便可以打開終端,而且此時在終端上默認的路徑就是D:\workspace\c\ittimeline\vs_code
D:\workspace\c\ittimeline\vs_code

如果想要知道windows有哪些可以使用的命令,可以使用help命令查看命令的幫助信息
help

然后就可以在終端上使用gcc helloworld.c -o helloworld.exe編譯源程序,這里的-o helloworld.exe 表示生成的可執行程序的文件名是helloworld.exe。如果不加上-o選項,系統默認生成的可執行程序文件名是a.exe的可執行程序文件名。

如果編譯多個源文件,源文件之間使用空格隔開

 

gcc編譯源文件,生成可執行文件
gcc編譯源文件,生成可執行文件

 

如果想要在Windows系統的終端上查看指定路徑的文件列表,可以使用dir命令,Linux系統是ls命令。
gcc編譯源文件

編譯完成之后如果編譯器沒有提示語法錯誤,並且成功生成可執行程序的文件helloworld.exe。
然后在終端上直接輸入helloworld.exe就可以執行運行程序,觀察程序的運行結果。
而helloworld程序的功能就是輸出windows10 & visual studio code hello world with c
運行helloworld

GCC的編譯過程

GCC編譯器在編譯C程序的源文件時會經歷預處理、編譯、匯編、鏈接四個步驟。

gcc編譯過程 編譯選項 文件后綴名
預編譯 -E .i
編譯 -S .S
匯編 -c .o
鏈接 沒有特定的選項 .exe/.out
  • 預處理
    主要是宏替換、頭文件包含和條件編譯,不會檢查程序的語法,預處理生成的文件后綴名是.i
    gcc針對預處理,編譯、匯編提供了編譯選項,其中預處理是-E選項,這里編寫一個gcc_test.c的源文件,來演示gcc的宏替換
#include <stdio.h>
//定義一個宏
#define PI 3.14

int main(int argc,char *argv[]){
    //預處理時會替換成該宏定義的值
    printf("PI=%.2f",PI);
    return 0;
}

然后在終端上使用gcc -E gcc_test.c -o gcc_test.i 預編譯生成gcc_test.i文件
gcc -E gcc_test.c -o gcc_test.i

然后在visual studio code中查看gcc_test.i文件,會發現在與編譯期間,gcc_test.i文件中的宏(PI)已經被替換成了對應的值(3.14),而且使用#include<stdio.h>包含的頭文件stdio.h的內容已經在預編譯生成的gcc_test.i中。
gcc_test
對比源文件gcc_test.c和預編譯生成的文件gcc_test.i兩個文件的大小。
文件大小

  • 編譯
    將預處理好的文件編譯成匯編文件,編譯生成的匯編文件是.s

gcc中的編譯選項是 -S ,該選項是將預處理好的文件生成匯編指令

編譯的命令如下

gcc -S gcc_test.c -o gcc_test.s

生成的匯編文件 gcc_test.s

 .file	"gcc_test.c"
 .text
 .def	__main; .scl 2; .type 32; .endef
 .section .rdata,"dr"
.LC1:
 .ascii "PI=%.2f\0"
 .text
 .globl	main
 .def	main; .scl 2; .type 32; .endef
 .seh_proc	main
main:
	pushq	%rbp
 .seh_pushreg	%rbp
	movq	%rsp, %rbp
 .seh_setframe	%rbp, 0
	subq	$32, %rsp
 .seh_stackalloc	32
 .seh_endprologue
	movl	%ecx, 16(%rbp)
	movq	%rdx, 24(%rbp)
	call	__main
	movq	.LC0(%rip), %rax
	movq	%rax, %rdx
	movq	%rdx, %xmm1
	movq	%rax, %rdx
	leaq	.LC1(%rip), %rcx
	call	printf
	movl	$0, %eax
	addq	$32, %rsp
	popq	%rbp
	ret
 .seh_endproc
 .section .rdata,"dr"
 .align 8
.LC0:
 .long	1374389535
 .long	1074339512
 .ident	"GCC: (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 7.3.0"
 .def	printf; .scl 2; .type 32; .endef

相對於更低級的匯編代碼而言,C語言更加容易上手,也方便后期維護。

  • 匯編
    將匯編文件生成二進制文件,匯編生成的二進制文件是.o

gcc的匯編選項是-c,其作用是將匯編代碼轉換成二進制的文件。

匯編的命令如下

gcc -c gcc_test.c -o gcc_test.o

匯編生成的二進制文件無法用文編編輯器打開, 如果強行打開是一堆亂碼,文本編輯器Visual Stuido Code無法直接解析二進制文件。
gcc_test.o

  • 鏈接
    將各個二進制文件加上庫函數和啟動代碼生成可執行文件。鏈接生成的文件在Windows下默認是.exe,在linux下是.out。

gcc的鏈接沒有提供對應的選項,但是當使用gcc gcc_test.c -o gcc_test.exe時, 默認會從預編譯、編譯、匯編、鏈接的過程執行。

圖解GCC的編譯過程
GCC編譯過程

Visual Studio Code 配置C/C++環境

https://www.cnblogs.com/lsgxeva/p/11115650.html

使用vs編寫代碼

在使用Visual Stuido 編寫代碼前,需要從Visual Studio 官網下載,並安裝Visual Studio,然后創建C語言的項目,並且創建和編寫源文件,然后使用gcc編譯源文件,並且運行程序。

VS 介紹、下載、安裝

visual studio 官網 : https://visualstudio.microsoft.com/
visual studio 下載: https://visualstudio.microsoft.com/zh-hans/downloads/
visual studio 文檔: https://docs.microsoft.com/zh-cn/visualstudio/?view=vs-2019

VS 創建項目

日常工作中通常是使用集成開發環境來開發項目,相對於普通的文本編輯器(例如Visual Studio Code)而言可以提高工作效率。
大部分集成開發工具(例如Visual Studio 2019,QT5.13,XCode11.3)都是以項目的形式管理程序,以C語言的項目為例,一個項目可以存放多個C語言的源文件和頭文件。

在下載和安裝完成Visual Studio 2019后,可以點擊文件->新建->項目(快捷鍵Ctrl+Shift+N)來創建一個項目。
新建項目

然后選擇基於C++的空項目
C++的空項目

然后設置項目的名稱、路徑以及所在的解決方案

Visual Studio 2019中一個解決方案可以包含多個項目

 

設置項目的名稱、路徑以及所在的解決方案
設置項目的名稱、路徑以及所在的解決方案

最后點擊創建,便可以生成一個名叫c-core-foundational的項目,該項目在c-core解決方案下
c-core-foundational

 

VS創建C語言源文件

解決方案下的項目創建完畢之后,就可以創建C語言的源文件,選中項目,右鍵添加新建項
添加新建項

然后在彈出的添加新項窗口中選擇基於C++文件,並且將源文件命名為helloworld.c。

需要注意的默認的文件名是源.cpp,不要忘記將文件的后綴名改成.c,否則會有意想不到的問題。因為C++的編譯器會比C語言更加嚴格

 

helloworld.c
helloworld.c

 

 

helloworld.c
helloworld.c

 

然后編寫helloworld,就是向終端輸出windows10 & visual studio 2019 hello world with c

#include <stdio.h>
int main(int argc,char*argv[]) {
	printf("windows10 & visual studio 2019 hello world with c");

 	return 0;

}

和之前在visual studio code中編寫的helloworld.c不同的是printf()函數傳遞的參數不同,從而會有不同的輸出結果。

編寫完成之后選中項目c-core-foundational,右鍵在文件資源管理器中打開文件夾
右鍵在文件資源管理器中打開文件夾

然后在地址欄D:\workspace\c\ittimeline\visualstuido2019\c-core\c-core-foundational中輸入cmd並回車
地址欄
input cmd

此時會開啟一個終端窗口,並且路徑就是在項目c-core-foundational所在的路徑下
cmd

然后可以在終端上調用gcc命令來編譯源文件,並且運行可執行文件
編譯源文件,運行可執行文件

VS創建C語言頭文件

在后期開發過程中還會使用到自定義的頭文件。
在Visual Studio 2019中創建頭文件和源文件類似,只需要選擇對應的模板即可。

首先選中項目新建項
新建項

然后選擇頭文件,並命名為common.h
common.h

頭文件和源文件
頭文件和源文件

主函數講解

int main(int argc, char* argv[]) {

	//如果想要查看printf()函數的定義,可以使用F12查看,然后按ctrl+-返回
	printf("windows10 & visual studio 2019 hello world with c");

	return 0;

} 

包丁解牛main函數



/* #開頭表示需要預處理,即編譯器編譯之前處理的事情 include 表示包含 而#include <stdio.h> 表示將系統路徑下(C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt)的頭文件stdio.h包含(本質是頭文件復制)到源文件helloworld.c中 */
/* stdio.h std表示標准,意味着該頭文件的函數都是可以跨平台(windows,linux,macOS)使用的 stdio表示跨平台的輸入輸出 i表示input,o表示output stdio.h即表示標准的輸入輸出頭文件,用於輸入輸出的函數(例如printf(),getchar()等等)都位於stdio.h頭文件中。C語言將功能相同的多個不同的函數放在同一個頭文件中 */
#include <stdio.h> // C程序包含頭文件不是必須的,因為helloworld中使用了printf()函數,而該函數的定義在stdio.h中,所有使用#include <stido.h>
//包含頭文件表示告訴編譯器,printf()函數存在,此處通過編譯。


/* 一個項目(例如這里的c-core-foundational)有且只能有一個主函數,當運行可執行文件的時候,系統會自動調用主函數運行。如果想要其他函數的代碼得到執行,其他函數必須直接或者間接被主函數調用 主函數也是程序的入口,程序從主函數一行一行執行。 如果一個項目中定義了多個主函數,程序編譯時會報錯 error: redefinition of 'main',因為編譯器不知道調用哪個主函數 main函數的左邊有個整數數據類型int,表示為函數執行完成后返回一個整數。 函數負責用於處理數據並返回對應的執行結果。 main函數右邊的()中的內容是形參,外部數據通過函數的參數傳遞到函數的內部 {}表示函數體,{}中包含了函數的所有內容,通常是成對出現的,無論是()還是{} printf()函數用於數據輸出,將""包含的內容輸出到終端上。如果想要輸出內容后實現換行的效果,可以使用轉義字符\n ;表示一條完整可執行語句的結束標記,這里的printf()函數調用就是一條完整的可執行語句,如果不加上分號,會出現編譯錯誤。 return 如果后面沒有加數據類型表示退出函數,這里結束main函數,return之后的代碼都不會再執行 return 0 在main函數中表示正常退出,非0表示異常退出。 */

/* int main(int argc,char*argv[]) { //如果想要查看printf()函數的定義,可以使用F12查看,然后按ctrl+-返回 printf("windows10 & visual studio 2019 hello world with c"); return 0; } */


int main(int argc, char* argv[]) {

	//如果想要查看printf()函數的定義,可以使用F12查看,然后按ctrl+-返回
	printf("windows10 & visual studio 2019 hello world with c");

	return 0;

} 

行注釋與塊注釋

注釋表示程序的說明,程序開發時可以添加適當的注釋,用於描述程序的功能,方便后期維護。
注釋也可以注釋部分代碼,在程序調試排錯時時經常使用。
注釋的內容在編譯器預處理時刪除。

C語言的注釋分為行注釋和塊注釋
行注釋使用//開頭,只能注釋一行,而快注釋使用/**/,可以注釋多行內容,需要注意的是在使用塊注釋的時候不要嵌套使用,否則程序會出現編譯錯誤。

system函數

在使用Windows,Linux,macOS等操作系統時,我們可以在操作系統提供的終端上輸入對應的命令來調用程序。
這里以windows為例,我們可以輸入calc命令來調用系統提供的計算器程序,輸入mspaint來調用系統提供的畫圖程序,輸入ping www.baidu.com 來檢查網絡是否通常
windows命令
那么如果在C程序中運行系統命名呢?
這里可以使用C語言的跨平台函數system來調用即可。

在調用system函數之前,首先需要包含該函數所在的頭文件stdlib.h,即#include <stdlib.h>

然后在使用system函數並傳遞對應的系統命令即可,系統命令以字符串的方式傳遞。

首先需要在項目c-core-foundatiaonal中定義一個源文件system_invoke.c,然后包含頭文件以及使用system函數以字符串的方式調用windows提供的命令


#include <stdlib.h>
int main(int argc,char *argv[]) {
	

	//system函數的本質就是使用字符串的方式執行命令
	//調用計算機
	system("calc");
	//檢測網絡
	system("ping baidu.com");
	//調用畫圖板
	system("mspaint");
	return 0;
}

接着使用gcc編譯器編譯該源文件並且運行生成的可執行程序system_invoke.exe。
程序運行時會依次打開計算器,檢測網絡和調用畫圖板。
編譯並運行程序

system阻止vs終端閃退

在之前的開發程序時,都是使用Visual Studio 2019來開發程序,但是編譯時確是使用了GCC編譯器來編譯某一個源程序。
實際上Visual Studio 2019也提供了C語言的編譯器用於編譯C語言源程序,后期編寫的程序都會開始采用Visual Studio 2019來開發、編譯和運行程序。

在這之前我們先要解決一個Visual Studio 2019的閃退問題。

首先編寫一段程序,程序的源文件名叫system_pause.c,它是用來向屏幕打印輸出跟Tony老師學C語言

#include <stdio.h>

int main(int argc,char *argv[]) {
	
	printf("跟Tony老師學C語言");
	return 0;

}

此時的c-core-foundational項目的文件結構是這樣的
文件結構

那么如何在Visual Studio 2019中編譯運行C程序勒,只需要點擊本地Windows調試器就可以一次性編譯c-core-foundational項目下的所有C程序,並鏈接生成c-core-foundational.exe
運行

但是因為目前c-core-foundational下有多個c語言的源文件,而且每個源文件都是包含了main函數,因此在編譯時Visual Studio 2019會提示找到一個或者多個多重定義的符號
錯誤提示

想要解決這個問題就需要將每個源文件的main函數重命名為其他的函數即可,因為Visual Studio 2019中的每個項目只能包含一個main函數。然后再次點擊本地Windows調試器,運行程序時不會再提示找到一個或者多個重定義的符號,而是發生了閃退現象,這個現象出現的原因就是因為該程序比較簡單,只有一句打印輸出的執行語句。程序執行的速度非常快,當程序從main函數開始執行,遇到return 0后程序執行完成,Visual Studio 2019自動關閉了程序運行時所啟動的終端,所有就形成了閃退現象。而如果使用gcc編譯器編譯時不會遇到閃退,因為使用GCC編譯器時的終端是我們手動打開的。

如果想要解決Visual Studio 2019的閃退(程序運行結束后自動關閉終端),可以使用多種方式,例如在程序中調用getchar()函數,該函數也是位於stdio.h頭文件中,當用戶輸入任意字符后退出程序。
或者使用system("pause")來讓程序臨時暫停,避免閃退。

在源文件中加了system("pause")后運行程序,程序會在輸出跟Tony老師學C語言並完成換行后會暫停,並提示請輸入任意鍵繼續。
system pause

vs的快捷鍵

快捷鍵通常是鍵盤上的多個按鍵的組合,通過快捷鍵可以快速實現某些功能。
Visual Studio 2019提供了豐富的快捷鍵,來完成程序開發過程中的常用功能。

快捷鍵 功能
Ctrl,k,f 自動格式化代碼
Ctrl,k,c 注釋選中的代碼
Ctrl,k,u 取消注釋的代碼
F9 設置斷點
F5 調試運行
Ctrl,F5 不調試運行
Ctrl,Shift,b 編譯,不運行
F10 next調試
F11 逐語句調試,如果遇到函數會跳到函數內部執行
F11 逐語句調試,如果遇到函數不會跳到函數內部執行

Visual Studio 2019調試技巧

在后期開發程序時,初學者可能會遇到各種各樣的問題,有可能是編譯錯誤,編譯器會直接提示出錯的信息
而也有可能是程序運行時的邏輯錯誤,此時就需要通過集成開發環境提供的調試功能來調試程序,查找問題。

首先在源文件的某行下斷點,當程序運行到斷點的地方會咋暫停。
然后使用F5 以調試的模式運行程序,如果函數中調用了其他函數,又想進入其他函數內部調試,可以使用F11,否則使用F10逐過程調試。

 

Visual Studio 2019調試技巧
Visual Studio 2019調試技巧

 

vs的4996錯誤

4996是一個錯誤編號。微軟希望程序員使用其提供的非標准c庫函數,但是程序員希望使用標准的C庫。

例如用於字符串復制的strcpy函數就是位於標准的C庫頭文件string.h中,如果使用該函數實現字符串復制

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]) {

    //初始化一個字符串
    char buf[32] = "";

    //使用位於頭文件string.h中的strcpy函數將helloworld復制到字符串變量buf中
    strcpy(buf, "hello world");
    //將字符串變量的內容輸出來
    printf("buf = %s\n", buf);
    system("pause");
    return 0;

}

運行程序時會Visual Studio 2019會提示該函數不是安全的,可以使用strcpy_s函數。
如果想要禁用這個聲明,可以使用#define _CRT_SECURE_NO_WARNINGS來禁用Visual Studio 2019的安全檢查,該語句必須要放在源文件的第一行。
strcpy非安全

除了#define _CRT_SECURE_NO_WARNINGS來解決Visual Studio 2019的C4996錯誤之外,還可以使用 #pragma warning(disable:4996) 來解決C4996錯誤。這個錯誤是Visual Studio 2019特有的,其他IDE沒有。

//#define _CRT_SECURE_NO_WARNINGS //解決Visual Studio 2019 的C4996錯誤方案一
#pragma warning(disable:4996) //解決Visual Studio 2019 的C4996錯誤方案二
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]) {

    //初始化一個字符串
    char buf[32] = "";

    //使用位於頭文件string.h中的strcpy函數將helloworld復制到字符串變量buf中
    strcpy(buf, "hello world");
    //將字符串變量的內容輸出來
    printf("buf = %s\n", buf);
    system("pause");
    return 0;

}

vs的代碼片段

在編寫C程序時,要解決Visual Studio 2019的C4006的錯誤,會使用宏定義#define _CRT_SECURE_NO_WARNINGS,同時會包含一些必備的頭文件,例如#include <stdio.h>,#include <stdlib.h>,而且源文件如果想要可以運行,還必須包包含固定格式的main函數,以及本人想添加一個注釋模板,用於程序的說明。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
/* @author liuguanglei ittimelinedotnet@gmail.com @wechat 18601767221 @website ittimeline.net @version */
int main(int argc, char* argv[]) {
	system("pause");
	return 0;
}

這些內容的格式都是固定的,可以使用Visual Studio 2019的代碼片段功能,通過設置快捷鍵來快速生成模板。

首先准備一個名為c_code_template.snippet的代碼片段文件,

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>MyCCodeTemplate</Title>
			<Shortcut>ct</Shortcut>
			<Description>c的標准模板代碼</Description>
			<Author>Microsoft Corporation</Author>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
				<SnippetType>SurroundsWith</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Code Language="cpp">
            <![CDATA[#define _CRT_SECURE_NO_WARNINGS
			#include <stdio.h>
			#include <stdlib.h>
      /*
        
          @author liuguanglei ittimelinedotnet@gmail.com
		  @wechat 18601767221
		  @website ittimeline.net
		  @version 
      */
			int main(int argc, char *argv[])
			{
				system("pause");
				return 0;
			}]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>

然后將該文件添加到Visual Studio 2019中,在Visual Studio 2019的菜單 工具->代碼片段管理
代碼片段管理器

然后在代碼片段管理器窗口選擇語言是Visual C++,位置選擇My Code Snippets

 

導入
導入

然后選擇導入c.snippet文件
c_code_template.snippet

 

為導入的代碼片段選擇一個位置
位置

然后點擊確定即可
確定

由於在c_code_template.snippet文件中設置了<Shortcut>ct</Shortcut>,也就意味着在C語言的源文件中輸入ct就可以生成如下模板

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
/* @author liuguanglei ittimelinedotnet@gmail.com @wechat 18601767221 @website ittimeline.net @version */
int main(int argc, char* argv[]) {
	system("pause");
	return 0;
}

使用Qt Creator創建C程序

Qt Creator是一個跨平台的集成開發環境,支持Windows,Linux,macOS。
這里使用Windows+Qt Creator來開發C程序,用於對比Visual Studio 2019兩者之間的差異。

Qt下載地址:http://download.qt.io/archive/qt/

Qt啟動界面
Qt啟動

在下載和安裝完成Qt后,啟動Qt,創建項目
New Project

然后選擇Non-Qt project -> Plain C Application
Plain C Application

然后設置項目名和路徑

項目名和路徑名稱都不能有中文

 

項目名和路徑
項目名和路徑

 

然后設置編譯系統
qmake

然后選擇編譯工具
編譯工具

然后配置項目管理
為了簡單,我這里就不做任何配置了
配置項目管理

到這里基於Qt5.13的項目就創建成功了

其中main.c和c-core.pro是Qt自動生成的
c-core by qt

然后可以點擊左下角的按鈕運行程序

左下角三個按鈕的功能依次是不調試運行、調試運行和編譯
不調試運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM