C:
TOML과 함께 작업하기

어떻게 사용하는가:

C에서 TOML을 작업하기 위해서는 C 표준 라이브러리에 이 기능을 포함하고 있지 않기 때문에, TOML 파일을 파싱할 수 있는 라이브러리가 필요합니다. 인기 있는 선택은 C99용 경량 TOML 파서인 tomlc99입니다. 간단한 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("파일을 열 수 없습니다");
        return EXIT_FAILURE;
    }

    toml_table_t *config = toml_parse_file(configFile, NULL, 0);
    if (!config) {
        fprintf(stderr, "파일 파싱 오류\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("데이터베이스 서버: %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("포트 %d: %ld\n", i, port);
        }
    }

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

출력:

데이터베이스 서버: "192.168.1.1"
포트 0: 8001
포트 1: 8001
포트 2: 8002

심층 분석

TOML은 다른 설정 파일 형식의 한계를 인식한 GitHub의 공동 창립자인 Tom Preston-Werner에 의해 만들어졌습니다. 그것의 목표는 사람과 컴퓨터 모두에게 복잡한 파싱 규칙 없이 이해하고 쓰기 쉬우며 모호하지 않게 하는 것입니다. C 생태계에서 TOML은 Rust의 serde_toml이나 Python의 toml과 같이 네이티브 지원을 가진 라이브러리가 있는 고급 언어처럼 1등급 시민은 아닙니다. 대신, C 개발자들은 tomlc99와 같은 외부 라이브러리에 의존해야 하지만, 이것은 C의 최소주의와 성능에 대한 강조를 고려할 때 전형적입니다.

TOML이 그 명확성에 대해 칭찬을 받고 있지만, 프로젝트의 요구에 맞는 설정 파일 형식을 선택하는 것이 중요합니다. 웹 API와의 상호 작용이나 더 복잡한 구조가 필요한 시나리오에서 JSON이나 심지어 YAML이 더 적합할 수도 있음에도 불구하고, 이들은 복잡도가 증가합니다. TOML은 가독성과 단순성이 최우선인 구성에서 빛나며, 반드시 가장 고급 데이터 구조가 필요한 것은 아닙니다.