Zig Academy · レッスン

@cImportによるCヘッダーのインポート

ZigからCの宣言を使います

レッスン 1/413 ステップ

「@cImportによるCヘッダーのインポート」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。

ZigからCを呼び出す

Zigでは、別のバインディング層を用意せずにCライブラリを直接利用できます。その橋渡しは組み込み機能の@cImportから始まります。

@cImportの動作

@cImportは、指定した小さなCファイルをZigのCコンパイラーで処理し、見つかったすべての宣言を通常のZig名前空間として公開します。

ヘッダーをインクルードする

呼び出しの中で@cIncludeを使ってヘッダーを列挙します。それぞれが、Cの#include行と同じようにCヘッダーを指定します。

const c = @cImport({
    @cInclude("stdio.h");
});

Cの名前空間

結果は通常のZigのconstです。他のZigのstruct名前空間と同じように、ドット記法でCの名前にアクセスできます。

c.printf("hi\n");

トップレベルで呼び出す

モジュール全体で使えるように、@cImportはファイルスコープに置きます。これは実行時ではなく、コンパイル時に一度だけ評価されます。

複数のヘッダー

1つの@cImportで複数のヘッダーを取り込めます。@cIncludeの行を追加すると、すべてが1つの統合された名前空間を共有します。

const c = @cImport({
    @cInclude("stdio.h");
    @cInclude("stdlib.h");
});

先にマクロを定義する

インクルードの前に@cDefineを使うと、Cコンパイラーに-Dフラグを渡す場合と同じようにCマクロを設定できます。

const c = @cImport({
    @cDefine("_GNU_SOURCE", "");
    @cInclude("stdio.h");
});

必要に応じて定義を解除する

対応する@cUndefを使うと、ヘッダーが解析される前にマクロを削除できます。既定値が邪魔になる場合に便利です。

コンパイル時に実行される

@cImportの内部で行われる処理はすべてコンパイル時に実行されます。ZigがCを解析して変換し、そのまま使えるZigの宣言を提供します。

定数も取り込まれる

単純な値に展開されるCマクロは、Zigで使える定数になります。そのため、EXIT_SUCCESSのようなものも名前空間内ですぐに利用できます。

return c.EXIT_SUCCESS;

1つの橋渡しで本物のCを使う

1つの@cImportで、Cライブラリ全体の関数、型、定数を利用でき、Zigらしいコードからすべて呼び出せます。

クイックチェック

Cの宣言をZigに取り込む組み込み機能を思い出してください。

まとめ

@cImportと@cIncludeを使うと、コンパイル時にCヘッダーがZigの名前空間へ変換され、Cの関数や定数を直接使えることを学びました。🎯

無料で開始

AI チューターと学ぶ Zig — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「@cImportによるCヘッダーのインポート」レッスンは無料ですか?

はい。「@cImportによるCヘッダーのインポート」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。

「@cImportによるCヘッダーのインポート」で何を学びますか?

ZigからCの宣言を使います ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Zig Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「@cImportによるCヘッダーのインポート」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このZig Academyレッスンでコードを書いて実行できますか?

はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. @cImportによるCヘッダーのインポート
  2. C関数の呼び出しとリンク
  3. Cのポインター、文字列、型
  4. zig translate-cでCをZigとして読む
← Zig Academyに戻る