2016-10-05 11 views
-3

私はこれをうまく説明しようとしていますが、私が関数を呼び出すと、それを主関数のコードに事実上挿入して、だから私はそれを複数回入力することなく保存することができますが、main関数の範囲で定義された変数に直接影響します。これを達成する最良の方法は何ですか?(C)メインのブロックを偽装する機能

EDIT:私はそれが単一の議論を取ることを望んでいることを明らかにするべきでしょう。

+5

あなたは何をしようとしているのかの例を投稿できますか? – dbush

+0

あなたは、おそらく機能するポインタ引数を探しているでしょう。 –

+0

'inline'関数ですか? –

答えて

3

プリプロセッサマクロが必要です。これらは実際の関数ではなく、コードをコンパイルする前にプリプロセッサが置き換えるコードブロックです。例えば、番号をインクリメントする簡単なマクロを考えてみます。

#include <stdio.h> 

#define INC(x) (x)++ 

int main() { 
    int a = 1; 
    INC(a); 
    INC(a); 
    printf("%d\n", a); 
    return 0; 
} 

テキストINC(a)ので、このプログラムは、3アウト(1後2単位)を印刷します実行し、a++に置き換えられます。

+1

私は最初にこれを尋ねている理由を説明するスーパーコンピテントプログラマーではなく、#defineディレクティブがこのユーティリティを持っていたのを知らなかったが、今はそれが理にかなっていると思う。 – aBlaze

関連する問題