правый. Проблема заключалась в том, что я использую «va_start» в своей программе и, более конкретно, решение, данное в «http://www.codeproject.com/Articles/4181/Variable-Argument-Functions?msg=4204968#xx4204968xx" solution», которое отлично работает в Win32, но не в x64, что не позволяет использовать __ asm.
Пример:
# define va_start (ap, v) {int var = _INTSIZEOF (v); __ asm read eax, v add eax __ asm, __ asm mov var ap, eax}
float add (float &x, ...) {
va_list list;
va_start (list, x);
float result = 0;
for (;;)
{
float p = (float) va_arg (list, double);
if (p == 0)
break;
result + = p;
}
va_end (list);
return result;
}
int main () {
float hh = 2.1;
cout << "Result is" << add (/ * 2.1 * / hh, 4.3,6.8);
return 0;
}
Теперь у меня есть проблема, связанная с тем, что __asm не работает на x64, но я могу решить ее, удалив «&», например:
"float add (float x, ...) {"