c語言支持函數的默認參數?C語言中沒有參數默認值的概念,但其實可以利用宏來模拟參數的默認值;,我來為大家講解一下關于c語言支持函數的默認參數?跟着小編一起來看一看吧!
C語言中沒有參數默認值的概念,但其實可以利用宏來模拟參數的默認值;
我們之前介紹過可變參數宏與逗号運算符,将兩者相結合的話可以定義出以下形式的宏:
#define func(...) __func((default, ##__VA_ARGS__))
當在func()裡不填寫任何内容的時候,正常情況下宏展開後會是func((default,)),但由于##__VA_ARGS__會将前面多餘的逗号忽略,所以宏展開後就相當于__func((default));
當在func()括号裡填寫有效值的時候,根據逗号運算符的值等于最後一個表達式的值的性質,宏會被展開為__func((##__VA_ARGS__))既default被丢棄,傳入的值隻有我們填寫的内容,通過這個技巧我們就可以設計出一個帶有默認參數的函數。
示例:
定義一個函數默認參數為0xff,不傳任何參數的時候打印0xff,傳入有效值的時候就打印我們傳入的内容;
#include <stdio.h>
#define func(...) __func((0xff, ##__VA_ARGS__))
void __func(int value)
{
printf("value: %d\r\n", value);
}
void main(void)
{
func();
func(100);
}
輸出:
value: 255
value: 100
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!