19
Апр
2014

Приоритет операций препроцессора

Допустим, есть такой макрос:

#include <iostream>

#define DEF(a,b) #a##b

int main()
{
    std::cout << DEF(3,4);
}

Есть ли какой-то порядок вычисления выражений в макросе, или все зависит от компилятора?

Здесь DEF(3,4) - это #3##4. Например, если у ## приоритет больше, то это экстендится в #34, и затем в "34". Если же наоборот, то сначала "3"##4, и затем "3"4 (VS2008 так и делает).

Источник: https://ru.stackoverflow.com/questions/314183/%D0%9F%D1%80%D0%B8%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D1%82-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9-%D0%BF%D1%80%D0%B5%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0

Тебе может это понравится...

Добавить комментарий