#line指令等に埋め込むパス名のエンコーディング問題について 更新日:2021年12月8日 公開日:2021年12月5日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 相変わらず今回もPHPでC言語の前処理をする話題です。前回、前々回と、#line指令を埋め込んだり、__FILE__をパス名にすり替えたりする処理を作ってきました。そこでは、話を簡単にするため、A […] 続きを読む
PHPによる前処理でソースコードを取り込む 更新日:2021年12月8日 公開日:2021年12月5日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 今回も例によってPHPでC言語の前処理をする話題の続きです。C言語には#include指令があり、これによって別のソースファイルを取り込むことができます。また、PHPにはincludeおよびreq […] 続きを読む
PHPの閉じタグに#line指令を埋め込む 更新日:2021年12月8日 公開日:2021年12月4日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 ここのところPHPでC言語の前処理をする話題を連載しています。今回のその一貫なのですが、これまでとはちょっと違うテーマになります。 PHPで前処理して生成したC言語のソースコードは、ほとんどの場合 […] 続きを読む
PHPでC言語の関数を他言語と連携させる 更新日:2021年12月8日 公開日:2021年12月2日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 前回は、PHPでC言語の関数宣言をさせると何が嬉しいのかという問いかけをして終わりました。今回は、その「なぜ嬉しいのか」について書くことにします。 C言語で実装した関数は、C++をはじめ、さまざま […] 続きを読む
PHPで関数の宣言を生成する 更新日:2021年12月22日 公開日:2021年12月2日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 ここのところPHPでC言語の前処理を行う話題が続いています。今回のその一環として、PHPでC言語の関数宣言を自動生成してみることにします。 今回は例として、標準Cライブラリのfgets関数の宣言を […] 続きを読む
PHPを使って列挙定数を文字列化する 更新日:2021年12月8日 公開日:2021年12月1日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 前回まではPHPで構造体を自動生成してきました。今回は構造体ではなく列挙体を作ってみることにします。それだけでは面白みがないので、列挙定数を与えると、その名前の文字列に変換する関数も自動生成してみ […] 続きを読む
PHPで定義した構造体のメンバ一覧を取得する 更新日:2021年12月8日 公開日:2021年11月29日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 前回のように、PHPの配列を使って構造体を定義しておけば、その構造体のメンバー一覧を取得するのは簡単です。 まずは、前回作ったmake_struct関数が出力する構造体の定義から見ていきましょう。 […] 続きを読む
PHPでC言語の構造体を定義する 更新日:2021年12月8日 公開日:2021年11月28日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 前回に引き続き、PHPでC言語の前処理を行う話題です。今回は、構造体のメンバーをPHPの配列として定義しておいて、それをC言語のソースコードに変換してみようと思います。 早速、PHPのコードから見 […] 続きを読む
PHPをC言語の前処理に使う 更新日:2021年12月8日 公開日:2021年11月28日 PHPによる前処理プログラミング技術情報 こんにちは、高木です。 C言語ではプリプロセッサを使って前処理を行います。プリプロセッサは比較的単純なことならできるのですが、ちょっと凝ったことをしようとすると力不足です。たとえば、事前に配列をソートするとか、静的に二分 […] 続きを読む
名前付きの実引数が実現できるかも…… 公開日:2021年11月26日 プログラミング技術情報 こんにちは、高木です。 これまでに書いて来た「省略記号表記を用いる関数形式マクロに渡された実引数の個数を調べる」や「マクロの可変個実引数の型を強制する」では、複合リテラルを使って何ができるかを模索しています。この手のネタ […] 続きを読む