ошибка: "va_start", используемый в Win64 ABI funtion, получая seero в clang, помогите мне решить эту проблему? - PullRequest
0 голосов
/ 19 декабря 2018

Я скомпилировал, но во время компиляции с CLANG в ubuntu я получаю сообщение об ошибке, подобное этой: va_start используется в Win64 ABI funtion.кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

va_* явно запрещены clang, за здесь .Используйте встроенные функции, если вы хотите "кросс-компилировать" между целями linux и windows, для здесь , также добавьте __attribute__((ms_abi)), иначе это тоже не будет работать, см. эти тесты .

static int
__attribute__((ms_abi))
va_Utimes(
  const char   *path,
  ...
  )
{
  __builtin_ms_va_list ap;

  __builtin_ms_va_start(ap, path);
  retval = ...ioctl( filp, FIOSETIME, ap);
  __builtin_ms_va_end(ap);

  return retval;
}
0 голосов
/ 19 декабря 2018

Поскольку ваша функция static и Я сомневаюсь, что вы передаете ее где-либо в качестве аргумента, я полагаю, вы можете просто удалить EFIABI здесь (и в объявлении).EFIABI - это соглашение о вызовах с 4 регистрами, для которого GCC, по-видимому, не поддерживает переменные аргументы.

...