在C語言中,default
關(guān)鍵字在結(jié)構(gòu)體中的使用是特定于C11標準的。它用于指定結(jié)構(gòu)體成員或聯(lián)合體的默認初始化行為。這在你定義一個結(jié)構(gòu)體類型并希望為某些字段提供默認值時非常有用。
以下是一個使用default
關(guān)鍵字的例子:
#include <stdio.h>
#include <stdbool.h>
typedef struct {
bool is_active;
int priority;
const char* name;
} Task;
Task createTask(const char* name, bool is_active, int priority) {
Task task = {0}; // 初始化所有成員為0或NULL
task.name = name;
task.is_active = is_active ? true : false; // 使用條件運算符設(shè)置默認值
task.priority = priority ? priority : 1; // 使用條件運算符設(shè)置默認值
return task;
}
int main() {
Task task1 = createTask("Task1", true, 5);
printf("Task1: %s, Active: %s, Priority: %d\n", task1.name, task1.is_active ? "Yes" : "No", task1.priority);
Task task2 = createTask("Task2", false, 0);
printf("Task2: %s, Active: %s, Priority: %d\n", task2.name, task2.is_active ? "Yes" : "No", task2.priority);
return 0;
}
在這個例子中,createTask
函數(shù)創(chuàng)建一個Task
結(jié)構(gòu)體實例,并根據(jù)傳入的參數(shù)初始化它。如果未提供某個參數(shù)的值,那么該字段將使用默認值。注意,這里我們使用了條件運算符(?:
)來在未提供參數(shù)值時設(shè)置默認值。
然而,需要注意的是,default
關(guān)鍵字本身并不直接出現(xiàn)在上述代碼中。實際上,default
關(guān)鍵字在C11標準中被引入,用于指定結(jié)構(gòu)體成員或聯(lián)合體的默認初始化行為。在上面的例子中,我們通過條件運算符和顯式地初始化成員變量來實現(xiàn)類似的效果。
要直接使用default
關(guān)鍵字,你可以編寫類似下面的代碼:
#include <stdio.h>
typedef struct {
bool is_active DEFAULT(false);
int priority DEFAULT(1);
const char* name DEFAULT(NULL);
} Task;
int main() {
Task task;
printf("Task: Active: %s, Priority: %d, Name: %s\n", task.is_active ? "Yes" : "No", task.priority, task.name);
return 0;
}
在這個例子中,如果未為Task
結(jié)構(gòu)體的成員變量提供值,它們將使用DEFAULT
指定的默認值。