C:
การทำงานร่วมกับ TOML

วิธีการ:

เพื่อที่จะทำงานกับ TOML ในภาษา C คุณจำเป็นต้องมีไลบรารีที่สามารถแยกวิเคราะห์ไฟล์ TOML ได้ เนื่องจากไลบรารีมาตรฐานของ C ไม่รวมฟังก์ชันนี้ไว้ ตัวเลือกที่ได้รับความนิยมคือ tomlc99, ตัวแยกวิเคราะห์ TOML ที่มีน้ำหนักเบาสำหรับ C99 นี่คือคู่มือแบบย่อในการอ่านไฟล์การกำหนดค่า TOML อย่างง่าย:

ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณติดตั้ง tomlc99 และเชื่อมโยงกับโปรเจ็กต์ของคุณอย่างเหมาะสม

ไฟล์ TOML ตัวอย่าง (config.toml):

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

โค้ด C ในการแยกวิเคราะห์ไฟล์นี้:

#include <stdio.h>
#include <stdlib.h>
#include "toml.h"

int main() {
    FILE *configFile;
    configFile = fopen("config.toml", "r");
    if (!configFile) {
        perror("Cannot open file");
        return EXIT_FAILURE;
    }

    toml_table_t *config = toml_parse_file(configFile, NULL, 0);
    if (!config) {
        fprintf(stderr, "Error parsing file\n");
        fclose(configFile);
        return EXIT_FAILURE;
    }

    toml_table_t *database = toml_table_in(config, "database");
    if (database) {
        const char *server = toml_raw_in(database, "server");
        printf("Database Server: %s\n", server);

        toml_array_t *ports = toml_array_in(database, "ports");
        for (int i = 0; i < toml_array_nelem(ports); i++) {
            int64_t port;
            toml_int_at(ports, i, &port);
            printf("Port %d: %ld\n", i, port);
        }
    }

    toml_free(config);
    fclose(configFile);
    return EXIT_SUCCESS;
}

ผลลัพธ์:

Database Server: "192.168.1.1"
Port 0: 8001
Port 1: 8001
Port 2: 8002

ศึกษาลึก

TOML ถูกสร้างขึ้นโดย Tom Preston-Werner ผู้ร่วมก่อตั้ง GitHub เป็นการตอบสนองต่อข้อจำกัดที่เขารับรู้ในรูปแบบไฟล์การกำหนดค่าอื่นๆ จุดประสงค์คือการทำให้ตรงไปตรงมาและไม่มีความกำกวม ทั้งสำหรับมนุษย์และคอมพิวเตอร์ในการอ่านและเขียนโดยไม่ต้องการกฎการแยกวิเคราะห์ที่ซับซ้อน ในระบบนิเวศของภาษา C, TOML ไม่ได้ถือเป็นพลเมืองระดับหนึ่งเหมือนที่อาจพบในภาษาระดับสูงเช่น Rust กับ serde_toml หรือ Python กับ toml ซึ่งมีไลบรารีที่ให้การสนับสนุนเนื้อเน็บ เน้นไปที่ความเรียบง่ายและประสิทธิภาพ

แม้ว่า TOML จะได้รับการชื่นชมสำหรับความชัดเจนของมัน แต่เมื่อเลือกรูปแบบไฟล์การกำหนดค่า สิ่งสำคัญคือต้องพิจารณาถึงความต้องการของโปรเจ็กต์ ในสถานการณ์ที่ต้องการโครงสร้างที่ซับซ้อนมากขึ้นหรือต้องการการทำงานร่วมกับเว็บ API JSON หรือแม้กระทั่ง YAML อาจเสนอการเข้ากันได้ดีกว่าโดยมีความซับซ้อนเพิ่มขึ้น TOML โดดเด่นในการกำหนดค่าที่ความอ่านง่ายและความเรียบง่ายเป็นสิ่งสำคัญ ไม่จำเป็นต้องเป็นที่ที่โครงสร้างข้อมูลที่ทันสมัยที่สุดจำเป็น