#defineで定数を設定する場合に、TXTなどのファイルを読み込み、読み込んだ
値を定数として設定することは可能でしょうか?
下記のようなプログラムを考えていたのですが、うまくいかなくて悩んでいます。
ご教授お願いします。
#define VARIABLE '0'
#define TMP fgetc(fopen("./test.txt","r+"))
#undef VARIABLE
#if TMP=='a'
#define VARIABLE 'a'
#elif TMP=='b'
#define VARIABLE 'b'
#else
#define VARIABLE 'c'
#endif
No.2ベストアンサー
- 回答日時:
#define定義はただの文字列置き換えにしかならない。
ということで……
>#if fgetc(fopen("./test.txt","r+"))=='a'
関数呼び出しはできないでしょう。
# 呼び出しできてもクローズしていませんし…。
そうなったら、既にプリプロセッサのお仕事ではありませんし。
#include "./test.txt"
で、ファイルの内容を読み込むことは可能です。
ので、./test.txtに
#define VARIABLE 'a'
とか記入しておけば、その内容を取り込むことは可能です。
もちろん、反映できるのはプリプロセッサが動作したときなので……
実行ファイルができあがった後で./test.txtの内容を書き換えて切り替えできるようにしよう。
そうすれば、再ビルドする手間掛からなくていいぢゃん!!
みたいなコトはできません。
# ので……普通にソースファイル上にdefine定義するのとあまり違いがありません。
No.3
- 回答日時:
ちなみに…たいていのコンパイラはコマンドラインでシンボル定義とか可能かと思われますので、
環境によってはMakefileなどでテキストファイルの内容でdefine定義を切り替える。
というコトは可能かも知れません。
# Visual Studioでそういうコトが可能かは不明ですが…
UNIX系であれば、configureスクリプトでそういう処理しながらMakefileを生成する。なんてことをしていても不思議ではない…でしょう。
おそらく。
# /etc/redhat-releaseの内容でパス名変えたりとか。
回答ありがとうございます。
ファイル内容によって自動設定することを目的としていたので、
makefileでも難しそうです。手動で定義しなおすしかないようですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- その他(プログラミング・Web制作) Arduino UNO のC言語 2 2023/04/18 19:42
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Visual Basic(VBA) VBA GetAttrについて教えてください 2 2022/12/22 15:25
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多数のサブディレクトリ内のフ...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
ftpコマンドで複数のファイルを...
-
Windowsのバッチファイルを利用...
-
.txtではなく.logの方が良いの...
-
テキストファイルで提出とは?
-
renameコマンドについて
-
wikiでローカルファイルのリン...
-
COPYコマンドで結合すると余計...
-
テキスト(txt)→ワード(docx)へ...
-
FLEXlmのライセンス使用状況を...
-
ファイル名の一部をbatで変更し...
-
コマンドプロンプトで指定した...
-
日本語名ディレクトリーから日...
-
バッチファイルからVBAに引数を...
-
フルパスの中にワイルドカード...
-
テキストファイルを読み込み ...
-
forfilesで検索したファイルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
psqlでエラーログをとりたい
-
テキストファイルで提出とは?
-
forfilesで検索したファイルを...
-
VBAでエクセルをtxtに変換する...
-
テキスト(txt)→ワード(docx)へ...
-
UWSCでテキストファイルを開い...
-
バッチファイルで文字列削除に...
-
wikiでローカルファイルのリン...
-
ExcelVBA テキストファイルUNIC...
-
コマンドプロンプトで指定した...
おすすめ情報