NodeJS コア (crypto) から簡単なコードを抜粋しました。
ASSERT_IS_BUFFER(args[0]);
ssize_t klen = Buffer::Length(args[0]);
ただし、これを独自のネイティブ拡張でコンパイルするとnode-gyp
、次のエラーが発生します。
../deps/v8/include/v8.h:202:5: error: assigning to 'v8::Object *volatile' from incompatible type
'v8::Value *'
TYPE_CHECK(T, S);
^
../deps/v8/include/v8.h:145:37: note: expanded from macro 'TYPE_CHECK'
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
^
../src/openssljs.cc:300:33: note: in instantiation of function template specialization 'v8::Handle<v8::Object>::Handle<v8::Value>'
requested here
ssize_t klen = Buffer::Length(args[0]);
^
何がこれを引き起こしているのでしょうか?