Я портирую наш продукт с 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. Посмотрим, что произойдет, хотя, даже если это исправит ситуацию, мне не очень нравится это решение.
заранее спасибо
Поможет ли использование встроенного определения функции в коде qt / c ++?
inline vartype localName(int* framePtr, int i){
return framePtr->localCachePtr->varName0.at(i);
}
Поскольку возможно иметь больше функций с одинаковыми именами, но с разными параметрами (количеством), это должно вызвать правильную функцию, и, будучи встроенным, это будет заменено во время компиляции.
Редактировать: Ммм, я только что видел, что ваша проблема, вероятно, обратная? Вы не можете скомпилировать, потому что localName (Something) всегда вызывает макрос. Вам определенно придется удалить макрос, но использование его в качестве встроенного вызова функции, мы надеемся, решит проблему.
Нормальным решением здесь было бы иметь класс-обертку для
Tcl материал. Единственное включение любых заголовков tcl будет в
реализация класса оболочки, и это не будет
включить что-нибудь из Qt.