STRINGZ_TO_NPVARIANT в проблеме xcode - PullRequest
0 голосов
/ 11 июля 2011

имеет следующий код:

NPVariant type;
STRINGZ_TO_NPVARIANT("click", type);

, и xcode возвращает

"ошибка: ожидаемое выражение перед 'uint32_t'"

любой может помочь мне с этим

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

Я тоже столкнулся с этим. Основываясь на этой ошибке, которую я обнаружил в проекте npapi, я решил проблему, не используя макрос, а вместо этого используя то, к чему он расширяется, а затем применяя то, что показывает патч. http://code.google.com/p/npapi-headers/issues/detail?id=3

- NPString str = {_val, uint32_t (strlen (_val))};

+ NPString str = {_val, (uint32_t) (strlen (_val))};

По сути, заключите uint32_t в круглые скобки, затем gcc скомпилирует его.

Таким образом, полная замена макроса

NPVariant type;
type.type = NPVariantType_String;
NPString str = { "click", (uint32_t)(strlen("click")) };
type.value.stringValue = str;
0 голосов
/ 06 августа 2011

в вашем npruntime.h найдите эти два MACRO

#define STRINGZ_TO_NPVARIANT(_val, _v)                                        \
NP_BEGIN_MACRO                                                                \
    (_v).type = NPVariantType_String;                                         \
    NPString str = { _val, **(uint32_t)** strlen(_val) };                          \
    (_v).value.stringValue = str;                                             \
NP_END_MACRO

#define STRINGN_TO_NPVARIANT(_val, _len, _v)                                  \
NP_BEGIN_MACRO                                                                \
    (_v).type = NPVariantType_String;                                         \
    NPString str = { _val, **(uint32_t)**_len };                                  \
    (_v).value.stringValue = str;                                             \
NP_END_MACRO

add (uint32_t), приведенные до strlen (_val) и _len

0 голосов
/ 11 июля 2011

Если вы проверите , что этот макрос разрешает в , вы получите:

NPVariant type;
type.type = NPVariantType_String;
NPString str = { "click", uint32_t(strlen("click")) };
type.value.stringValue = str;

По крайней мере, таким образом можно понять, к чему относится сообщение об ошибке.Однако я все еще не уверен, в чем причина ошибки - возможно, ваша версия XCode или GCC устарела.Согласно документации вам нужен как минимум Xcode 2.5 и gcc 4.2.

...