2012-01-25 9 views
2

私は多くの変数を定義する必要があり、それを1つずつ実行したくありません。さらに、私はマクロについてもっと学びたいと思っています。Cマクロは一度に多くの変数を定義します

int x1; 
int x2; 
int x3; 
int x4; 
int x5; 

私はそれがマクロで行うことができます:それでは、私はこのようなX1、X2、X3、X4、X5を定義するとしましょうか?このように:

#define defint(i) int x(i)//x(i) does not work. I need to somehow combine x and i. How?? 

、その後は私が定義したいどのように多くの変数に対してループのために作りますか?

UPDATE:私はOperating systemのためにいくつかのコードでは、多くのトラップのための多くのハンドラを定義するためにそれを使用しますので、私は、配列を使用したくない(私は私のブートローダができるだけ小さくなるようにしたいです: P)

アップデート2:私は自分自身をより明確にする必要がありそうです。これはコードなので、アセンブリコードもあります。半分のコードはCで、半分はasmです。私はアセンブリでマクロを介してすべての変数を定義し、Cextern :)で宣言します。

+5

Cには、まさにこの目的のための配列があります。 'int x [5];' –

+0

@larsmans:はい私は知っています。 – prongs

+1

コンパイル時のもの(プリプロセッサ '#define's)と実行時のもの(コンパイラ固有の' for')を混在させることはできません。 – pmg

答えて

4

トークンの貼り付け用途:あなたはマクロが、それは声明のように見えるようにするために、使用されたときにことをしたいので、また

#define DEFINT(i) int x ## i 

、私はしなかった方法を見ては、末尾のセミコロンが含まれます。

関連する問題