Shmuel wrote: .
Поведение, описываемое автором (вывод числа вместо "Hello"), можно получить, если вместо FMVT_STRING указать FMVT_INTEGER.
Ага, я тоже до этого допер...
Более того, оказалось, что это не просто число, а десятичное представление АДРЕСА ПАМЯТИ, по которому располагается строка "Hello".
Поняв это, я и ошибку нашел. И оказалась она, как ни странно, вот в этой строке:
Code: Select all
FarMacroValue FMV = {FMVT_STRING};
В результате такой инициализации FMV.Type принимает значение FMVT_INTEGER !!!
Оправившись от шока, я нашел и объяснение этому неочевидному эффекту (в файле plugin.hpp):
Code: Select all
#ifdef __cplusplus
. . .
FarMacroValue(int v) { Type=FMVT_INTEGER; Integer=v; }
. . .
#endif
Вот этот вот заботливый конструктор и обеспечил меня удовольствием на пол ночи
)