Возможный дубликат:
Создание макроса C С## и LINE (объединение маркеров с помощью макроса позиционирования)
Я пытаюсь использовать макрос __LINE__
для генерации разных имен переменных. У меня есть класс контрольных тестов под названием Benchmark (расположенный в пространстве имен utils), и конструктор берет строку. Вот определение макроса, которое я создал:
#define BENCHMARK_SCOPE utils::Benchmark bm##__LINE__(std::string(__FUNCTION__))
К сожалению, это вызывает следующую ошибку:
<some_file_name>(59): error C2374: 'bm__LINE__' : redefinition; multiple initialization
Это приводит меня к выводу, что макросы __LINE__
не расширяются. Я создал свой макрос в соответствии с этим сообщением. У вас есть идеи, почему __LINE__
не расширяется?
EDIT: возможно, информация компилятора также актуальна. Я использую visual studio 2010.