++ = ОБНОВЛЕНИЕ 1 = ++
Выполнение с -E возвращает следующее:
# 100 "/usr/include/sys/byteorder.h" 3
#define BSWAP_64(x) (((uint64_t)(x) << 56) | (((uint64_t)(x) << 40) & 0xff000000000000ULL) | (((uint64_t)(x) << 24) & 0xff0000000000ULL) | (((uint64_t)(x) << 8) & 0xff00000000ULL) | (((uint64_t)(x) >> 8) & 0xff000000ULL) | (((uint64_t)(x) >> 24) & 0xff0000ULL) | (((uint64_t)(x) >> 40) & 0xff00ULL) | ((uint64_t)(x) >> 56))
...
#define _LP64 1
...
# 86 "LALCityHash.c" 2
#define bswap_32(x) BSWAP_32(x)
#define bswap_64(x) BSWAP_64(x)
# 117 "LALCityHash.c"
#define UINT4_in_expected_order(x) (bswap_32(x))
#define UINT8_in_expected_order(x) (bswap_64(x))
Похоже, что это делается через CPP.
Полное содержание на https://pastebin.com/u6VU9sie
Источник LALCityHash.c в https://pastebin.com/GfQ3CxBX
- = ОБНОВЛЕНИЕ 1 = -
Я собираю программные пакеты LIGO для SPARC / Solaris и сталкиваюсь с ошибками. LALCityHash.c предоставляет псевдоним для BSWAP_64, который, кажется, не справляется с необходимыми ключами #include, содержащимися в неизмененном коде.
Я пытался увидеть, помогает ли переопределение определений в другом месте только в том случае, если строки "#iffined (__ sun) || определенные (sun)" не анализируются. Даже удаление .h включает использование необходимого кода локально, чтобы файл не работал. Я просто не могу понять, что я пропускаю.
LALCityHash.c содержит следующие строки:
#elif defined(__sun) || defined(sun)
#define bswap_32(x) BSWAP_32(x)
:87 => #define bswap_64(x) BSWAP_64(x) <=
...
:118 => #define UINT8_in_expected_order(x) (bswap_64(x)) <=
...
static UINT8 Fetch64(const char *p) {
:133 => return UINT8_in_expected_order(UNALIGNED_LOAD64(p)); <=
}
Выдает обе ошибки ниже:
implicit declaration of function '<b>BSWAP_64</b>'
nested extern declaration of '<b>BSWAP_64</b>'
Файл для ОС ОС Solaris - это sys / byteorder.h и определяется следующим образом:
#if defined(_LP64) || defined(_LONGLONG_TYPE)
#if (!defined(__i386) && !defined(__amd64))
#define BSWAP_64(x) (((uint64_t)(x) << 56) | \
(((uint64_t)(x) << 40) & 0xff000000000000ULL) | \
(((uint64_t)(x) << 24) & 0xff0000000000ULL) | \
(((uint64_t)(x) << 8) & 0xff00000000ULL) | \
(((uint64_t)(x) >> 8) & 0xff000000ULL) | \
(((uint64_t)(x) >> 24) & 0xff0000ULL) | \
(((uint64_t)(x) >> 40) & 0xff00ULL) | \
((uint64_t)(x) >> 56))
#else /* x86 */
#define BSWAP_64(x) htonll(x)
#endif /* !__i386 && !__amd64 */
#else /* no uint64_t */
#define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32))
#endif /* _LP64 || _LONGLONG_TYPE */
Making all in utilities
gmake[4]: Entering directory '/export/home/tidytibs/ligo/lal-6.19.2/src/utilities'
CC LALCityHash.lo
<b>LALCityHash.c:</b> In function '<b>Fetch64</b>':
<b>LALCityHash.c:87:21:</b> <b>error: </b>implicit declaration of function '<b>BSWAP_64</b>' [<b>-Werror=implicit-function-declaration</b>]
#define bswap_64(x) <b>B</b>SWAP_64(x)
<b>^</b>
<b>LALCityHash.c:118:37:</b> <b>note: </b>in expansion of macro '<b>bswap_64</b>'
#define UINT8_in_expected_order(x) (<b>bswap_64</b>(x))
<b>^~~~~~~~</b>
<b>LALCityHash.c:133:10:</b> <b>note: </b>in expansion of macro '<b>UINT8_in_expected_order</b>'
return <b>UINT8_in_expected_order</b>(UNALIGNED_LOAD64(p));
<b>^~~~~~~~~~~~~~~~~~~~~~~</b>
<b>LALCityHash.c:87:21:</b> <b>error: </b>nested extern declaration of '<b>BSWAP_64</b>' [<b>-Werror=nested-externs</b>]
#define bswap_64(x) <b>B</b>SWAP_64(x)
<b>^</b>
<b>LALCityHash.c:118:37:</b> <b>note: </b>in expansion of macro '<b>bswap_64</b>'
#define UINT8_in_expected_order(x) (<b>bswap_64</b>(x))
<b>^~~~~~~~</b>
<b>LALCityHash.c:133:10:</b> <b>note: </b>in expansion of macro '<b>UINT8_in_expected_order</b>'
return <b>UINT8_in_expected_order</b>(UNALIGNED_LOAD64(p));
<b>^~~~~~~~~~~~~~~~~~~~~~~</b>
<b>LALCityHash.c:</b> In function '<b>Fetch32</b>':
<b>LALCityHash.c:86:21:</b> <b>error: </b>implicit declaration of function '<b>BSWAP_32</b>' [<b>-Werror=implicit-function-declaration</b>]
#define bswap_32(x) <b>B</b>SWAP_32(x)
<b>^</b>
<b>LALCityHash.c:117:37:</b> <b>note: </b>in expansion of macro '<b>bswap_32</b>'
#define UINT4_in_expected_order(x) (<b>bswap_32</b>(x))
<b>^~~~~~~~</b>
<b>LALCityHash.c:137:10:</b> <b>note: </b>in expansion of macro '<b>UINT4_in_expected_order</b>'
return <b>UINT4_in_expected_order</b>(UNALIGNED_LOAD32(p));
<b>^~~~~~~~~~~~~~~~~~~~~~~</b>
<b>LALCityHash.c:86:21:</b> <b>error: </b>nested extern declaration of '<b>BSWAP_32</b>' [<b>-Werror=nested-externs</b>]
#define bswap_32(x) <b>B</b>SWAP_32(x)
<b>^</b>
<b>LALCityHash.c:117:37:</b> <b>note: </b>in expansion of macro '<b>bswap_32</b>'
#define UINT4_in_expected_order(x) (<b>bswap_32</b>(x))
<b>^~~~~~~~</b>
<b>LALCityHash.c:137:10:</b> <b>note: </b>in expansion of macro '<b>UINT4_in_expected_order</b>'
return <b>UINT4_in_expected_order</b>(UNALIGNED_LOAD32(p));
<b>^~~~~~~~~~~~~~~~~~~~~~~</b>
cc1: all warnings being treated as errors
gmake[4]: *** [Makefile:586: LALCityHash.lo] Error 1