これは私の最初の投稿です。漠然としすぎている場合や、誰もが直感的に推測できる情報を提供している場合は、お知らせください。
私はCで書くのが初めてで、前処理をよりよく理解しようとしています。を使用してコンソールから直接引数を受け取ることができる単純なプログラムを作成していますgcc -Wall -std=c99 -DSEED=argument
。ここで、引数は整数である必要があり-D
ます。定義されていない場合はユーザーが入力します。
SEED 値は単に で使用されsrand()
ます。-DSEED=a
引数としてを入力するとコンパイルされるのに、なぜコードがコンパイルされないのか、非常に混乱してい-DSEED=1
ます。「âaâ undeclared (first use in this function)」というエラーが表示され、2 つの違いがよくわかりません。変数の型を入力と一致させたと思った#define
ので、「a」を入力すると #SEED は char になり、「1」を入力すると #SEED は int になります。
SEED が定義されていない場合は、#ifndef SEED
コマンドを使用していますが、これはうまく機能します。SEED
入力を「文字列化」してから、それが整数かどうかを確認できると思います。オンラインでいくつかの記事を読んだ後、私は使用しようとしています:
#ifndef SEED
//code
#else
#define TO_STRING( input ) #input
char c;
c = TO_STRING( SEED )
//Then I was going to use c to figure out if it was an int.
#endif
これは機能していません。私が持っていると思われる誤解を指摘できる人なら誰でも大歓迎です。
編集 - を試したときにエラーメッセージが表示された理由はわかりまし-DSEED=a
た。変数として読み取っていたからです。