PCP

[象の卵] 構造体のメンバ数の取得方法?

Cの構造体のメンバ数を取得したいという要望があるようです。Cの構造体は、あくまでもコンパイル時だけの概念であり、実行時には情報が失われてしまいます。ですので、実行時にメンバ数やメンバの型、あるいはメンバ名を取得することはできません。どうしてもやりたければ、構造体とは別に自分で情報を管理するしかありません。ここまではnoocyteさんも指摘されています。

象の卵を探して...

久々にnoocyteさんのサイトにヒントを得た記事を書くことにします。今回の元ネタは象の卵です。ずいぶん前のコンテンツですが、まあ、気にせずにいきましょう。

なぜ、凶悪なマクロプログラムに挑戦するのか

昨日のGCC拡張を用いたマクロプログラムもそうですが、私はこうやってときどき凶悪なマクロプログラムに挑戦しています。無い知恵を絞りながら、コンパイラの限界に挑むようなマクロをいろいろと考えています。さらには、コンパイラの限界を突破するために、PHPに前処理をさせるPCPのようなものまで持ち出しています。

PCPにおけるASP形式タグと二文字表記

まだ、アイデアが出かけたばかりで、具体的に何に使えるのか十分に検討できていないのですが、PCP: C PreprocessorでASP形式のタグを許可する/しないの切り替えによって、コンパイル時の処理と実行時の処理を切り替えられる可能性があります。

ヒアドキュメントを使う

スクリプト言語の多くはヒアドキュメントをサポートしていますが、Cの場合はヒアドキュメントを使うことはできません。ヒアドキュメントがあれば便利なことも多いのですが、Cでは、普通の文字列として記述する以外ありません。

PCPを使えば、そうした問題を解消し、Cでもヒアドキュメントが使えるようになります。以下に例を示します。

[実験] PCP: C Preprocessor

バカバカしいことも大まじめに取り組めば、ひとつぐらい実のなるものもあるかもしれないということで、いろいろ実験を行っています。今回もそのひとつで、PHPをCのプリプロセッサに使うことでメタプログラミングをやろうという話です。この話題は、当サイトでは以前から何度か出ていましたが、いくつかの問題点を解消した結果を今回はまとめておくことにします。

C99関数・マクロ・前処理スクリプト集

ここでは、C99のを対象とした(C90で使えるものもあります)関数、マクロ、そしてPCPを用いた前処理スクリプトを紹介します。GCC拡張を利用したコードも扱いたいと考えています。半分冗談めいたものもありますので、過信はしないでください。

コンテンツ配信