Как предотвратить замену макроса C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как предотвратить замену макроса C++

Сообщение Anonymous »

Я создаю модуль ядра Linux, исходный код основан на C++.
Один из файлов src с именем A.cpp всегда создавал ошибку.
A.cpp косвенно включите два файла заголовков: asm/current.h и bits/stl_iterator.h последовательно.
Определение макроса находится по адресу asm/current.h:

Код: Выделить всё

#define current get_current()
Между тем, определение класса C++ находится в bits/stl_iterator.h:

Код: Выделить всё

 template
class reverse_iterator
{
protected:
_Iterator current;
...
public:
...
_GLIBCXX17_CONSTEXPR
reverse_iterator() : current() { }
}
К сожалению, "" в классе C++ был заменен на "

Код: Выделить всё

get_current()
" на этапе предварительной обработки, следовательно, на этапе компиляции сообщается о синтаксических ошибках.
поэтому любой способ исправить проблему без изменения двух заголовочных файлов, поскольку они предусмотрены стандартом. Библиотека C++ или исходный код ядра Linux?
Я знаю, что мы можем использовать "

Код: Выделить всё

#undef current
" или измените порядок включения, чтобы избежать проблемы, но это не должно быть разумным решением проблемы.

Подробнее здесь: https://stackoverflow.com/questions/792 ... bstitution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»