2017-02-16 10 views
0

は、私はちょうどバッシュのソースでこれを見た:これはどのように解析されますか?

/* Force gcc to not clobber X on a longjmp(). Old versions of gcc mangle 
    this badly. */ 
#if ....... 
# define USE_VAR(x) ((void) &(x)) 
..... 

私の質問は、に((void) &(x))解析を何ですか?これは、次のようバッシュのmainに使われています:

..... 
USE_VAR(argc); 
USE_VAR(argv); 
USE_VAR(env); 
...... 

答えて

3

それはxのアドレスを取得し、その後voidにキャスト。結果は何もありません。

しかし、コンパイラは、変数のアドレスが取得されている場合、その変数が「使用されている」と考えている可能性があります。

関連する問題