1. 程式人生 > >程序環境和預處理

程序環境和預處理

() aaaaaa 進行 include strong 重新 行號 相同 swap

1.linux環境實踐,熟悉使用(網絡搜索)
ls//list列出當前文件夾的所有文件
cd//change directory更改(切換)目錄
mkdir//make directory創建目錄(文件夾)
rm//remove刪除文件
mv//move移動文件
touch//創建文件
pwd//print work directory打印當前工作目錄


3.熟悉預處理標識符:
__LINE__ : 文件當前的行號
__FILE__ : 進行編輯的源文件
__DATE__ : 文件被編輯的日期
__TIME__ : 文件被編輯的時間


4.宏和函數的區別:
其區別主要表現在:代碼長度、執行速度、操作符優先級、參數求值、參數類型

這幾方面。

代碼長度:

#define 宏:每次使用時,宏代碼都被插入到程序中。除了非常小的宏之外,程序的長度將大幅度增長。

函數:函數代碼只出現於一個地方;每次使用這個函數時,都調用那個地方的同一份代碼。

執行速度:

#define 宏:更快。

函數:存在函數調用/返回的額外開銷。

操作符優先級:

#define 宏:宏參數的求值是在所有周圍表達式的上下文環境中,除非他們加上括號,否則鄰近操作符的優先級可能會產生不可預料的結果。

函數:函數參數只在函數調用時求值一次,他的結果值傳遞給函數。表達式的求值結果更容易預測。

參數求值:

#define 宏:參數每次用於宏定義時,他們都將重新求值。由於多次求值,具有副作用的參數可能會產生不可預料的結果。

函數:參數在函數被調用時求值一次,在函數中多次使用參數並不會導致多種求值過程。參數的副作用並不會導致任何特殊的問題。

參數類型:

#define 宏:宏與類型無關。

函數:函數的參數與類型有關。如果參數的類型不同,就需要使用不同的函數,即使他們執行的任務是相同的。

5.寫一個宏可以將一個數字的奇數位和偶數位交換。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define SWAP(x)\
(((x&(0x55555555)) << 1) | ((x&(0xAAAAAAAA))>>1))//十六進制
//提取x的奇數位並左移一位,偶數位並右移一位

int main()
{
int x = 5;
printf("%d\n", SWAP(x));
system("pause");
return 0;
}


6.使用宏實現兩個數中求較大值。
#include <stdio.h>
#define MAX(a,b)\
((a) > (b) ? (a) : (b))
int main()
{
int a = 5;
int b = 10;
printf("%d\n", MAX(a, b));
system("pause");
return 0;
}

程序環境和預處理