Cyan4973 / xxHash

Extremely fast non-cryptographic hash algorithm
http://www.xxhash.com/
Other
8.97k stars 769 forks source link

XXH_INLINE_ALL and MSVC #219

Closed paleozogt closed 5 years ago

paleozogt commented 5 years ago

xxHash v0.7.0 with XXH_INLINE_ALL doesn't work on MSVC 2017.

Given this:

#define XXH_INLINE_ALL 1
#include "xxhash.h"

it fails with these errors:

z:\development\xxhash_test\libs\xxhash\xxh3.h(148): error C2156: pragma must be outside function
z:\development\xxhash_test\libs\xxhash\xxh3.h(295): warning C4244: 'argument': conversion from 'XXH64_hash_t' to 'unsigned int', possible loss of data
z:\development\xxhash_test\libs\xxhash\xxh3.h(616): error C2065: 'noinline': undeclared identifier
z:\development\xxhash_test\libs\xxhash\xxh3.h(616): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
z:\development\xxhash_test\libs\xxhash\xxh3.h(617): error C2448: '__attribute__': function-style initializer appears to be a function definition
z:\development\xxhash_test\libs\xxhash\xxh3.h(619): warning C4146: unary minus operator applied to unsigned type, result still unsigned
z:\development\xxhash_test\libs\xxhash\xxh3.h(689): warning C4244: 'argument': conversion from 'XXH64_hash_t' to 'unsigned int', possible loss of data
z:\development\xxhash_test\libs\xxhash\xxh3.h(690): warning C4244: 'argument': conversion from 'XXH64_hash_t' to 'unsigned int', possible loss of data
z:\development\xxhash_test\libs\xxhash\xxh3.h(691): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
z:\development\xxhash_test\libs\xxhash\xxh3.h(708): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
z:\development\xxhash_test\libs\xxhash\xxh3.h(725): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
z:\development\xxhash_test\libs\xxhash\xxh3.h(737): warning C4146: unary minus operator applied to unsigned type, result still unsigned
z:\development\xxhash_test\libs\xxhash\xxh3.h(737): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
z:\development\xxhash_test\libs\xxhash\xxh3.h(741): error C2065: 'noinline': undeclared identifier
z:\development\xxhash_test\libs\xxhash\xxh3.h(741): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
z:\development\xxhash_test\libs\xxhash\xxh3.h(741): error C2374: '__attribute__': redefinition; multiple initialization
z:\development\xxhash_test\libs\xxhash\xxh3.h(616): note: see declaration of '__attribute__'
z:\development\xxhash_test\libs\xxhash\xxh3.h(742): error C2448: '__attribute__': function-style initializer appears to be a function definition
z:\development\xxhash_test\libs\xxhash\xxh3.h(744): warning C4146: unary minus operator applied to unsigned type, result still unsigned
z:\development\xxhash_test\libs\xxhash\xxh3.h(753): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
z:\development\xxhash_test\libs\xxhash\xxh3.h(789): warning C4146: unary minus operator applied to unsigned type, result still unsigned
z:\development\xxhash_test\libs\xxhash\xxh3.h(789): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
Cyan4973 commented 5 years ago

I think this issue is fixed in dev branch

paleozogt commented 5 years ago

Ah you're right. I tried the dev branch and it works.