質問

私の質問に対してCは昨日の夜を知らなかったの答えておりますので使用しないCから学んだと思いますが、答えはここだけでなく忘れていた。

場合によって定義など

#define count 1

でその人の変数名 count 使用の1をうです。

いとは思っていなかったのでインストールしたと思ったのもポイントの1が見つからないどのように1点を返す。

役に立ちましたか?

解決

単純な回答はできません。#定義のように対応してプリプロセッサは、ポイント。もちろん、その他の問題とともにコンパイラなノウハウとしての"1"が点い複数の変数と同じ値でも同時に行います。

他のヒント

建@ケルーの回答をご利用の場合プリプロセッサを学で値のシンボルのコードがないのシンボルを一度にプリプロセッサが実行します:

#define COUNT (1)
...
int myVar = COUNT;
...

後は、プリプロセッサを走る:

...
int myVar = (1);
...

そして、これは、基本的にはというと"は、上記の理由です。

でその人の変数名を"カウントを利用する"1うのですか?

No

としての思いを映し出す鏡とに精通していますが#defineいものなのにコンパイルして組み込むソース、そのままではプロセッサはマクロまでのソースに変更すべてのインスタンス'count'と、'1'.

しかし、つまり光の質問だったので、Cはコンパ言語の機械コードにおいて、反射を含まない言語のようなJava、C#.すべてのネーミングを紛失した後で編集を持っていない場合、枠組みを構築ソース/コンパイラにnifty。

願い この 役になっています。(言い訳にpun)

残念ながらことはできません。

#define の記述のプリプロセッサは、全てのインスタンス count 交換 1.実行時になメモリ位置に伴う count, その努力は無駄にな.

ものを使用している場合、変数、編集はありませんの名残の識別子を使用されます。これは一般的に限りダイナミックに。

一trick用Cるには、次のように構文をマクロの文字列リテラルのマクロのパラメータとします。

#define displayInt(val) printf("%s: %d\n",#val,val)
#define displayFloat(val) printf("%s: %d\n",#val,val)
#define displayString(val) printf("%s: %s\n",#val,val)

int main(){
  int foo=123;
  float bar=456.789;
  char thud[]="this is a string";

  displayInt(foo);
  displayFloat(bar);
  displayString(thud);

  return 0;
}

出力のあるべき姿には、次のようなもの:

foo: 123
bar: 456.789
thud: this is a string

#define count 1 非常に悪いことで防いでくれるのですからネーミングの他の変数または構造分野 count.

例えば:

void copyString(char* dst, const char* src, size_t count) {
   ...
}

count マクロまでの原因となる変数名称に置き換えられる 1, 防この関数から作成:

void copyString(char* dst, const char* src, size_t 1) {
   ...
}

Cで定義しているプリプロセッサの指令ではなく、可変となります。プリプロセッサでもお客様のファイルと置き換えが書いてますカウントと分かって定義として、作成.のobfuscated Cコンテスト応募は、特に賢明な利用をすることその他のプリプロセッサを示しています。

ではありません'count'ポート時に'1'の値です。それだけで簡単べ替え動作が このコードはもう取りまとめを行いました。

私がこの編集できる人にとっては実際に私がC、改善していきたいです。

count なに変更します。このス割り当てられた、エントリにシンボル。このマクロを取得するに置換され、プリプロセッサに渡す前に、ソースコードをコンパイラです。

のいさんかかの権問題が、わかりやすく伝えるための名前をマクロ:

#define SHOW(sym) (printf(#sym " = %d\n", sym))
#define count 1

SHOW(count); // prints "count = 1"

# オペレーターに変換するマクロの引数の文字列リテラルです。

#define テ指令などでは"変数"

だが実際にいない変数でのプリプロセッサディレクティブ.ときにコンパイルのコードのプリプロセッサでも、お願いするものでありますinstacesの単語'count'このファイル1.

るでしょうばん1角レンチをお使いいただけまカウントポイントです。No.この関係の変数の名前と値ではないbijectionありません。検討

int count = 1;
int count2 = 1;

完全に法律がどうすれば1を解決すか?

リーダーごとには出来ません。

まずは#defineない変数でコンパイラのプリプロセッサをクリックします。

の時間の位相コンパイラを取得し、その名のものに交換されている価値、名"count"は存在しないのでコードが取りまとめを行いました。

のための変数でを調べておくことができない変数名のCコードで行います。これらの情報はない。異言語のようなJavaまたはスレッドセーフで、C#、Cのいいメタデータの全ては、統を組み立てます。

指令"で始については、プロセッサは、通常はテキストの置換を渡す前にコードをインターネットを"リアルのコンパイラです。あなたが変わ回数ですべてが"count"の文字列をコードは魔法の"1"で文字列になります。

ううホテルを簡単に見ること"変数".

場合のマクロはこpreprocessedおよび結果の出力が取りまとめを行いました。のではないことを見出その名前でのプリプロセッサfinnishes仕事のストファイルが含まれます'1'の代わりに'count'はファイルです。

なので答えはnoです。

ばんは、C言語のソースコードするにはデバッガから見ようなもの

int i = count;

その時点で、検索することができ裏のライン

#define count 1

しかしながら、全てが変iDontKnowWhatものでcontans1日を制限することはないと思うトラックに戻る'count'.

なぜですか?なので#defineは評価しているプリプロセッサの時間がものをコンパイル前のものためのウズベキスタンのほとんどの人が、とも捉えることが可能である最初のステージの編集).その結果のソースコードであるということだけは他の情報'count'のように知ることができた。時間によってコンパイラが見え、参'count'に置き換えられ数は1.

なのポインタをかけて食べるという習慣があり文字/トークンを代入します。プリプロセッサーを置換すべての定義の前にコードまとめ.ほとんどのコンパイラを備-Eまたは類似の引数に放出されやすいコンパイル済みコードのなか見ることができるようなコードになりの後、すべてのディレクティブが処理されます。

より直接ご質問がないのだということを保証するトークンを入れ替えるとともにコードです。コードできないもの(count==1)(1==1)です。

まいにすることは可能ではな利用のソースファイルをテキスト解析というを使用差分ツールです。

ということは何ですか"発見"?

の線

#define count 1

を定義するシンボル"カウント"という値が1になりました。

最初のステップの"全国短観"と"支店短観"と呼ばれる前処理)の交換は毎洞のシンボル数1その場合は:

if (x > count) ...

で置き換えられる:

if (x > 1) ...

まこされており、見学することが理由"を探カウント"の意味がない。

の者からの質問で面接を問われているのか) て取得しようとしたときの差別化を#define定数に対enums.例えば:

#define ZERO 0
#define ONE 1
#define TWO 2

vs

enum {
  ZERO,
  ONE,
  TWO
};

さらにコード:

x = TWO;

ご利用の場合は列挙はの代わりに#を定義し、デバッガまることを示すことができることがで象徴的な形の価値、だけでなく、数値の2.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top