コンテンツにスキップ

C

設定例

[project]
name = "my-c-app"
root = "."
languages = ["c"]
[[layers]]
name = "domain"
paths = ["src/domain/**"]
dependency_mode = "opt-in"
allow = []
external_mode = "opt-out"
external_deny = []
[[layers]]
name = "usecase"
paths = ["src/usecase/**"]
dependency_mode = "opt-in"
allow = ["domain"]
external_mode = "opt-out"
external_deny = []
[[layers]]
name = "infrastructure"
paths = ["src/infrastructure/**"]
dependency_mode = "opt-out"
deny = []
external_mode = "opt-out"
external_deny = []

インクルードの分類

インクルード分類
#include "domain/user.h"内部(ローカルヘッダ)
#include "create_user.h"内部(同ディレクトリ)
#include <stdio.h>標準ライブラリ
#include <stdlib.h>標準ライブラリ
#include <curl/curl.h>外部(サードパーティ)

分類ルール

  • #include "..." (引用符)→ Internal(プロジェクト内ヘッダ)
  • #include <...> (山括弧)→ C 標準 / POSIX ヘッダなら Stdlib、それ以外は External

相対パス(../domain/user.h)は正規化されてレイヤーマッチングに使用されます。

対応ファイル拡張子

.c.h の両方が解析対象です。

ネーミング規則

Symbol(関数定義、struct/enum/union/typedef)、Variable(グローバル変数)、Comment のすべてが name_deny の検出対象です。