конфликт между макроопределением tcl-8.5.12 и методом в qt-4.7.4

Я портирую наш продукт с tcl-8.4 на tcl-8.5.12

в новой версии tcl есть макрос, определенный в tclInt.h

#define localName(framePtr, i) \
((&((framePtr)->localCachePtr->varName0))[(i)])

также мой продукт использует Qt-4.7.4. А в qt-4.7.4 / include / QtXml / qdom.h есть атрибут

QString localName() const;

В результате я получаю сообщение об ошибке: qt-4.7.4 / include / QtXml / qdom.h: 165: 23: ошибка: макросу «localName» требуется 2 аргумента, но только 1 дано

Любые предложения, чтобы решить эту проблему?

Переход к undef макросу в tcl. Посмотрим, что произойдет, хотя, даже если это исправит ситуацию, мне не очень нравится это решение.

заранее спасибо

0

Решение

Поможет ли использование встроенного определения функции в коде qt / c ++?

inline vartype localName(int* framePtr, int i){
return framePtr->localCachePtr->varName0.at(i);
}

Поскольку возможно иметь больше функций с одинаковыми именами, но с разными параметрами (количеством), это должно вызвать правильную функцию, и, будучи встроенным, это будет заменено во время компиляции.

Редактировать: Ммм, я только что видел, что ваша проблема, вероятно, обратная? Вы не можете скомпилировать, потому что localName (Something) всегда вызывает макрос. Вам определенно придется удалить макрос, но использование его в качестве встроенного вызова функции, мы надеемся, решит проблему.

0

Другие решения

Нормальным решением здесь было бы иметь класс-обертку для
Tcl материал. Единственное включение любых заголовков tcl будет в
реализация класса оболочки, и это не будет
включить что-нибудь из Qt.

0

По вопросам рекламы [email protected]