0
#define MAX 7
#define BUFFER 16
#define MODULO 8

typedef struct {
int x;
} BLAH;

私が持っている場合:

  checkWindow(BLAH *b) {  
  int mod;   
  mod = b.MODULO; 
  }

具体的には、BLAH 構造体から MODULO にアクセスできますか?

4

2 に答える 2

2

プリプロセッサ定義の意味を誤解していると思います。#define-d 項目は変数のようにしか見えませんが、古典的な意味での変数ではありません: それらはテキスト置換です。これらは、コンパイラがプログラムのテキストを確認する前に、プリプロセッサによって解釈されます。プリプロセッサが完了するまでに、プログラムのテキストには 、 、または への参照がMAXありませBUFFERん。これが-d 変数にアクセスできない理由です。アクセスする変数はありません。MODULO7168#define

于 2013-02-04T20:04:14.563 に答える
0

すべての #defines は、コンパイル前に、それらが定義する「値」によってプレーン テキストで置き換えられます。これらは変数ではなく、プログラムを簡単に記述できるようにするための単純な構文です。#def のものは実際にはコンパイラに到達せず、プリプロセッサで解決されます。

さて、例の MODULO を単に 8 に置き換えた場合、結果のコードは意味をなすでしょうか? 意味がある場合は、コンピュータ プログラミング 101 コースを受講してください。

于 2013-02-04T20:23:55.227 に答える