• 締切済み

txtから読み込んだプログラムをdefineで置き換え

txtに書き込んであるプログラムを ソース上に反映する事は可能なのでしょうか? defineでポインタ配列に読み込んだデータを置き返したのですが 上手くいかなくて、分かる方がいたら教えてくださいorz

みんなの回答

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.5

>txtファイルにプログラムを記述しておき >それをファイル読み込みしソースへ反映させたいのです. なんで、"txtファイル"にプログラムを記述したいのですか? ".h"や".c"では困る理由がわかりません。 ".h"は関数の宣言を入れるものですが、 #defineマクロを使って、 ちょっとした”関数定義もどき"を記述することも可能です。 無論、”本当の"関数ではないので、色々注意点もあるわけですが ちょっとした計算程度なら可能です。 あまり、お勧めはできませんが .cを#includeすることもできないわけではありません。 #includeなんて、所詮、エディタの"貼り付け"みたいなものなので、 関数定義を含んだファイルを#includeしても、 (お勧めするわけではありませんが) その行為自体がエラーになるわけではありません。 それでも、"txt"でなければならない理由があるのなら 教えてください

dissition
質問者

お礼

記述したプログラムを関数化またはヘッダーファイル化したく無い理由としては txtデータに記述した人が中途半端にしかプログラムを打てないから・・・ なのに何故プログラムをtxtに記述しているかとしては 詳しく言うとプログラムではなくデータの塊 中途半端にプログラムを齧っていた為に 数百単位のtxtデータの内容に余計な","、"{"、"}"を含んでいる為 配列に格納するより、プログラムの文章として扱った方が 手っ取り早いと感じたので質問したのですが・・・ txtファイル内の書き換えのプログラムでも作ってヘッダーや関数化します。 回答ありがとうございました

回答No.4

No.2です。 >txtファイルにプログラムを記述しておき >それをファイル読み込みしソースへ反映させたいのです 行いたいことがまだはっきりとイメージできていないのですが、それって、 ・処理を関数化し、別ファイルにしておき、差し替える ・ifdefと条件コンパイルで、コンパイルする処理を換える ってことで対応できる内容のような気がしてきましたが……

dissition
質問者

お礼

諦めて自己解決する事にしました わざわざ二度も解答してくれてありがとうございます 詳しい事は5番目に解答してくれた人の回答に書きました 手間取らせてすみません、回答ありがとうございました

回答No.3

> txtに書き込んであるプログラムを > ソース上に反映する事は可能なのでしょうか? だけよむと、一般的には #include "filename" を使う予感が。。。 > defineでポインタ配列に読み込んだデータを置き返したのですが こっちがやりたいことの主題なのかな? どんなことをしようとしていますか?

dissition
質問者

お礼

txtファイルにプログラムを記述しておき それをファイル読み込みしソースへ反映させたいのです 自分はdefineを使って見ましたが define以外での方法があれば教えていただきたいのです

回答No.2

#defineで定義されたものは、コンパイル時に置き換えられます。 従って、実行ファイル中の#define定義に当たる部分だけを変更することはできません。 但し、あらかじめ配列にように領域を確保しておき、ファイルがなかったら(または起動時の初期化で)デフォルト値として設定し、 起動時にファイルから内容を読み込み領域に反映させることは可能です。

dissition
質問者

お礼

そうですね、 #defineはコンパイル時に置き換わる物で ソース自体では無いのは理解しています 自分の説明力不足ですね、すみませんorz 回答ありがとうございます

回答No.1

よくわからないのですが、 exeになっている時点ではもうソースではありません。 しかも#defineはすべて置き換わってしまっている状態です。 ですので、そのプログラムでtxtファイルを扱って#defineとするみたいなことは 不可能です。

dissition
質問者

お礼

説明力が足りなくて本当申し訳ないorz txtファイルに記述しているソースを コンパイル前のソースに反映する事は可能なのかどうかが知りたかったので 自分は読み込んだファイルをソース上に反映する為に使ったのがdefine と言うだけで必ずしもdefineを使って行いたいというわけではないのです 回答ありがとうございます

関連するQ&A