DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C言語のプリプロセッサのアルゴリズムについて

分類:[その他]

 VB.NETでC言語のプリプロセッサ機能を実現しようとしているのですが、
アルゴリズムが思いつきません。
 どなたかプリプロセッサのアルゴリズムを紹介しているURLなどは
ご存知ないでしょうか?
こんにちは、Mu-さん。ピラルクです。

C言語のプリプロセッサ機能というのは、
いわゆるマクロの#defineのことでしょうか?
そのアルゴリズムといえば、単なる文字列置換では?
そうではなくて、どうやってIDEと協調させるか
ということなら、アドインから可能かどうかを調べて、
無理ならIDEごと作るとか。(^^;
こんにちは。

> C言語のプリプロセッサ機能というのは、
> いわゆるマクロの#defineのことでしょうか?
そうです。
あとコメント文を削除するなどがあります。

> そのアルゴリズムといえば、単なる文字列置換では?
確かに最終的に行う処理はそうだと思いますが、
例えば
#if MACRO_A || MACRO_B
printf("DEBUGMODE");
#elseif
printf("TRUEMODE");
#endif

のようなプリプロセッサ条件文があった場合、
有効であるCソースがどの部分か判定したいのです。
(送信時にエラーが発生し、記事カウンタがインクリメントされなかったため再送します)

こんにちは。

> C言語のプリプロセッサ機能というのは、
> いわゆるマクロの#defineのことでしょうか?
そうです。
あとコメント文を削除するなどがあります。

> そのアルゴリズムといえば、単なる文字列置換では?
確かに最終的に行う処理はそうだと思いますが、
例えば
#if MACRO_A || MACRO_B
printf("DEBUGMODE");
#elseif
printf("TRUEMODE");
#endif

のようなプリプロセッサ条件文があった場合、
有効であるCソースがどの部分か判定したいのです。
こんばんは、Mu-さん。ピラルクです。

> 有効であるCソースがどの部分か判定したいのです。

これは、現状使えるのでは?

#Const MODE_X = True

#If Debug Or MODE_X Then
#Else
#End If

> あとコメント文を削除するなどがあります。

これはコンパイラの字句解析のためなのかなぁ。
でないなら、ソース整形ツールの範疇なのでは?
(よくわからない...)

DOBON.NET | プログラミング道 | プログラミング掲示板