2017-02-16 2 views
0

Я только что видел это в источнике Bash-:Что это такое?

/* 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)) разобрана до? Он используется в Bash-х main следующим образом:

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

ответ

3

Он принимает адрес x, а затем привести его к void. Результат - ничего.

Но компилятор может полагать, что когда переменная имеет свой адрес, она «используется».