標C編程筆記day04 預處理、宏定義、條件編譯、makefile、結構體使用

預處理:也就是包括須要的頭文件,用#include<標準頭文件>或#include "自己定義的頭文件"

宏定義,如:#define PI 3.1415926
查看用宏定義的值替換宏名稱,如:gcc -E test.c
帶參數的宏:MAX(x,y) (x)>(y)?

((x):(y))?? //用法與函數一樣
宏運算:
?? ?#define PRINT(n) printf(#n"=%d",n)?? //#n 就是把傳入的變量值作為字符串放在那里
?? ?#define MAX(type) type max_##type()? //##n就是把變量的值作為函數名的一部分
?? ?#define MKID(n) i_##n??????????????? //##n就是把變量的值作為變量名的一部分

C語言中提前定義的宏:
?? ?_LINE_ 當前正在編譯的行號:%d
?? ?_FILE_ 正在編譯的源程序名:%s
?? ?_DATE_ 編譯程序的日期:%s
?? ?_TIME_ 編譯程序的時間:%s
?? ?_STDC_ 推斷編譯器是否符合c標準,返回0或1:%d
條件編譯:
?? ?#define TEST 1
?? ?#if TEST
?? ??? ?//TEST為真時運行的代碼
?? ?#endif
?? ?
?? ?#ifndef ABC_H? //假設沒定義,就定義宏
?? ?#define ABC_H
?? ?//頭文件定義
?? ?#endif
?? ?
?? ?#ifdef ABC_H? //假設定義了宏,取消定義
?? ?#undef ABC_H
?? ?#endif

?? ?推斷:????????? if defined(TEST) && !defined(ABC_H){??? }
?? ?if……else……語法:#if …… #elif……#elif……#else……#endif

編譯時。參數? -D 可隨時定義宏。



聲明使用外部變量的方法:exterm int speed;//speed為外部變量名

編寫makefile文件批量編譯的語法,演示樣例:
main:main.o test.o test.h? //冒號前臺的是生成的目標。后面的是依賴的文件
?? ?gcc main.o test.o -o main? //編譯的詳細語句
main.o:main.c
?? ?gcc -c main.c
test.o:test.c
?? ?gcc -c test.c
clean:
?? ?rm *.o

用法 。能夠使用make 編譯所有,也可使用make main.o 生成 main.o,使用make test.o 生成 test.o ,make clean 刪除編譯生成的.o文件。
結構體長度計算演示樣例(自己主動補齊):
總長度為最長數據類型字節的整數倍。
struct student//總長28。是4的整數倍,所以終于大小為28字節
{
?? ?int ID;//4字節
?? ?char name[20];//數組 ,每一個字符1字節,共20字節
?? ?int age;//4字節
};

typedef struct//總長18字節,要是4的整數倍。大于10且是4的整數倍的數是20,所以終于大小為20字節
{
?? ?int ID;//4字節
?? ?char name[10];//數組 ,每一個字符1字節,共10字節
?? ?int age;//4字節
}student;
結構體變量的定義和使用:
?? ?struct student s; 或 struct student s={101,"zs",20};//定義時總體賦值
?? ?s.ID=101;//單個賦值
?? ?strcpy(s.name,"zs");//字符數組賦值

轉載于:https://www.cnblogs.com/clnchanpin/p/7191489.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257982.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257982.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257982.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java數據結構系列——排列(2):有序陣列

package Array;/*** 對數組排序。當添加到陣列保持有序數組元素&#xff1b;* author wl**/ public class MyOrderArray {private long array[];private int elements;//用于記錄數組中實際數據的個數public MyOrderArray(){arraynew long[50];//數組默認長度為50&#xff1b;}…

NSString 練習

//將“?文藝?青年”改成“213?青年”。 NSString *str "文藝青年"; NSString *str1 [str stringByReplacingOccurrencesOfString:"文藝" withString:"213"]; NSLog("%",str1); //將 整數123 轉換為字符串“123”。 NSString *s …

安全市場五巨頭將面臨新興廠商的挑戰

賽門鐵克、思科、IBM、Check Point、英特爾&#xff0c;警鐘已敲響~ 2016年同比增長率11.5%的數據出臺之后&#xff0c;市場研究公司科技商業研究(TBR)為來年的安全行業繪制了一幅嶄新的藍圖——安全市場上現有的企業將受到新興廠商的挑戰。 展望未來&#xff0c;現有安全市場五…

linux編譯運行build.sh,linux下libwebsockets編譯及實例

最近想自己搭建一個webscoket協議的服務器&#xff0c;打算用libwebsockts這個庫。下載代碼編譯。編寫一個shell腳本#!/bin/sh# wget http://git.warmcat.com/cgi-bin/cgit/libwebsockets/snapshot/libwebsockets-1.4-chrome43-firefox-36.tar.gz# tar xvzf libwebsockets-1.4-…

Tomcat如何配置環境變量

1&#xff0c; JDK&#xff1a;版本為jdk-7-windows-i586.exe 下載地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2&#xff0c;tomcat&#xff1a;版本為apache-tomcat-7.0.33-windows-x86.zip 下載地址&#xff1a;http://tomcat.apache.org/ 2…

eclipse常用快捷鍵——非常實用

1、eclipse 查看變量或方法被調用的快捷鍵如下&#xff1a; &#xff08;1&#xff09;雙擊選中變量或者方法&#xff08;2&#xff09;鍵盤上CtrlshiftG組合鍵 2、eclipse中查看接口實現類快捷鍵 先找到接口類打開,然后雙擊接口名選中,再按住ctrlT就可以了。 3、eclipse中全局…

反編譯查看源碼dex2jar

為什么80%的碼農都做不了架構師&#xff1f;>>> 上次說到了用apktool反編譯&#xff0c;這次我們來用dex2jar 把apk解壓得到文件夾 文件夾打開看到這些文件 其中這個classes.dex就是這次需要用到的字節碼文件 把這個字節碼文件托到dex2jar目錄里 命令行編輯 得到下…

linux命令驗證sqlldr,Linux:sqlldr命令

第一步&#xff1a;寫一個 ctl格式的控制文件CTL 控制文件的內容 &#xff1a;load data --1. 控制文件標識infilexxx.txt --2. 要導入的數據文件名insert into table test--3. 將文件插入到數據庫的 test 表中fields terminated by X09 --4. 用于分割一行中各個屬性值的符號(例…

STL 中的鏈表排序

一直以來學習排序算法&#xff0c; 都沒有在鏈表排序上下太多功夫&#xff0c;因為用得不多。最近看STL源碼&#xff0c;才發現&#xff0c;原來即使是鏈表&#xff0c;也能有時間復雜度為O(nlogn)的算法&#xff0c; 大大出乎我的意料之外&#xff0c;一般就能想到個插入排序。…

cmd更換編碼類型

chcp 65001 UTF-8 65001 GBK 936 本文出自 “曾頤楠的播客” 博客&#xff0c;請務必保留此出處http://zengyinan.blog.51cto.com/9524976/1721475 轉載于:https://www.cnblogs.com/zengyinanos/p/5042732.html

代碼混淆之后定位線上bug

代碼混淆的目的 代碼混淆的目的是防止競爭對手通過反編譯來閱讀項目代碼。 Android中通過ProGuard來做代碼混淆&#xff08;當然也還有其他的產品可以做代碼混淆&#xff09;。 bug日志反混淆 資料&#xff1a;錯誤log、mapping.txt 異常log&#xff1a; mapping.txt&#xff…

linux怎么切換不同版本的r,在linux中用同一個版本的R 同時安裝 Seurat2 和 Seurat3

在linux中用同一個版本的R 同時安裝 Seurat 2 和 Seurat 3Seurat 作為單細胞分析中的重量級R包&#xff0c;有多好用用&#xff0c;用過的人都知道。Seurat 分析流程基本涵蓋了單細胞分析中的所有常見分析方法&#xff0c;包括filtering&#xff0c;tSNE&#xff0c;UMAP降維及…

Unity手游之路四3d旋轉-四元數,歐拉角和變幻矩陣

http://blog.csdn.net/janeky/article/details/17272625 今天我們來談談關于Unity中的旋轉。主要有三種方式。變換矩陣&#xff0c;四元數和歐拉角。 定義 變換矩陣可以執行任意的3d變換&#xff08;平移&#xff0c;旋轉&#xff0c;縮放&#xff0c;切邊&#xff09;并且透視…

本地通知

本地通知&#xff0c;local notification&#xff0c;用于基于時間行為的通知&#xff0c;比如有關日歷或者todo列表的小應用。另外&#xff0c;應用如果在后臺執行&#xff0c;iOS允許它在受限的時間內運行&#xff0c;它也會發現本地通知有用。比如&#xff0c;一個應用&…

Redux 并不慢,只是你使用姿勢不對 —— 一份優化指南

原文地址&#xff1a;Redux 并不慢&#xff0c;只是你使用姿勢不對 —— 一份優化指南原文作者&#xff1a;Julian Krispel譯文出自&#xff1a;掘金翻譯計劃本文永久鏈接&#xff1a;github.com/xitu/gold-m…譯者&#xff1a;reid3290校對者&#xff1a;sunui&#xff0c;xek…

把windows裝到linux下,如何將WSL(Windows Subsystem for Linux 2)安裝到Windows 10?

原標題&#xff1a;如何將WSL(Windows Subsystem for Linux 2)安裝到Windows 10&#xff1f;Windows 10憑借大受歡迎的WSL(Windows Subsystem for Linux)進入Linux領域。由于最近推出了WSL的最新版WSL2&#xff0c;用戶現在可以利用實際的Linux內核從Windows執行Linux任務。現在…

TWRP-recovery中文界面安裝方法[轉]

把下載到的ui.zip放入sdcard1/twrp文件夾。注意&#xff0c;是內置存儲卡中。如沒有上述文件夾&#xff0c;自行建立后通過文件管理器放入&#xff0c;不是卡刷。文件夾應如下所示&#xff1a;sdcard1&#xff08;內置SD&#xff09; &#xff5c; ┕--twrp&#xff08;文件夾…

如何定期備份網站數據

產生這個問題的背景是我在維護兩個個人的網站&#xff0c;因為采用的是虛擬主機&#xff0c;有時候空間續費不及時等&#xff0c;都可能造成數據的丟失&#xff0c;為了保障數據不丟失&#xff0c;因為有必要每15天左右對網站數據進行備份以防止發生不當的事情。 我們希望做的就…

初創團隊可能不適合應屆生小孩

根據最近招聘中接觸到的一些剛畢業小孩的表現&#xff0c;談談這個問題&#xff1a; 1、扛不住&#xff0c;初創團隊一般最好一人撐一快工作&#xff0c;剛畢業經驗比較薄的小孩在這方面一是心理上不敢擔當&#xff0c;二是能力上確實還需要磨煉成長 2、初創團隊的那個環境可能…

vba執行linux命令,從VBA中的shell命令捕獲輸出值?

慕蓋茨4494581根據Andrew Lessard的回答&#xff0c;這是一個運行命令并將輸出作為字符串返回的函數 -Public Function ShellRun(sCmd As String) As StringRun a shell command, returning the output as a stringDim oShell As ObjectSet oShell CreateObject("WScript…