We have noticed compilation errors in "C:\Program Files (x86)\Audiokinetic\Wwise2023.1.8.8601\SDK\include\AK\Tools\Common\AkBitFuncs.h" when building against prebuilt x64 libs with clang (ie. https://clang.llvm.org) in wwise 2023.1.8.8601
This appears to be due to the fact that _MSC_VER is #defined in clang.
Please see the following documentation for more information
https://clang.llvm.org/docs/UsersManual.html#microsoft-extensions
For instance, the following code snippet does not compile with clang due to the fact that the MSVC-specific _BitScanForward function is not defined.
Note that the commented-out code can be used as a workaround but requires modifying headers in the wwise distribution :-/.
Please note that I have tried to disable MS compatibility and extensions using the following switches to no avail.
-fno-ms-compatibility
-fno-ms-extensions
I thought it was worth bringing this issue to the attention of the AK developers in order to hopefully avoid this problem for future releases.
-------------------------------------------------------------------------------------------
//#if defined _MSC_VER && !defined(__clang__)
#if defined _MSC_VER
AkForceInline AkUInt32 AkBitScanForward(AkUInt32 in_bits)
{
unsigned long ret = 0;
_BitScanForward(&ret, in_bits);
return in_bits ? ret : 32;
}
#elif defined(__clang__) || defined (__GNUC__)
AkForceInline AkUInt32 AkBitScanForward(AkUInt32 in_bits)
{
return in_bits ? __builtin_ctz(in_bits) : 32;
}
#else
AkForceInline AkUInt32 AkBitScanForward(AkUInt32 in_bits)
{
if (in_bits == 0) return 32;
AkUInt32 ret = 0;
if ((in_bits & 0x0000FFFFULL) == 0) { ret += 16; in_bits >>= 16; }
if ((in_bits & 0x000000FFULL) == 0) { ret += 8; in_bits >>= 8; }
if ((in_bits & 0x0000000FULL) == 0) { ret += 4; in_bits >>= 4; }
if ((in_bits & 0x00000003ULL) == 0) { ret += 2; in_bits >>= 2; }
if ((in_bits & 0x00000001ULL) == 0) { ret += 1; in_bits >>= 1; }
return ret;
}
#endif