в чем разница: 0
?
Нет, , если вы не пишете сумасшедший код . Обычно для макросов, содержащих выражения, используются круглые скобки, чтобы избежать непредвиденных ошибок, связанных с приоритетом операторов и подобными вещами при их использовании. Однако в этом случае определение чего-либо как 0
или как (0)
одинаково, если оно используется в выражениях.
Что я подразумеваю под «сумасшедшим кодом»? Ну, единственное различие между ними можно увидеть в следующем:
void func(int x) { /* ... */ };
#define ADC_STATUS_SUCCESS 0
func ADC_STATUS_SUCCESS; // INVALID
#define ADC_STATUS_SUCCESS (0)
func ADC_STATUS_SUCCESS; // VALID (for the love of God NEVER do this)
Я очень сомневаюсь, что это так, хотя никто в здравом уме не написал бы такую мерзость. Это определение, скорее всего, по привычке.