Используйте прокрутку для преобразования: translateY с привязкой вверху

Перед тем, как называть его, вам нужно предоставить объявление для func.

int func(int a,int b);
int main() {
}
int func(int a,int b) {
    // implementation
}

Ваш код, предположительно, скомпилирован с предупреждением что-то вроде warning: implicit declaration of function 'func'. Если вы исправили это предупреждение, вы также исправили бы ошибку.

Было бы неплохо, если бы компилятор предупредил вас о как можно большем числе потенциальных проблем. Вы также можете быть в безопасности от возможности пропуска предупреждений, рассматривая их как ошибки. Вы можете сделать это, добавив -Wall -Werror к вашей команде сборки для gcc или /W4 /Wx для MSVC.

Обратите внимание, что правильное значение возвращается, если вы передаете int s в func. Возможно, это может быть связано с тем, что вызывающий код не знает, что ему нужно передать аргументы в int и передать float. func затем либо считывает регистры / местоположения стека, которые floats не были скопированы или получены представления бит из аргументов float и обрабатывают их как int. Любой из них приведет к получению неверных значений a, b. Вы можете проверить это самостоятельно, добавив printf внутри func, чтобы отметить значения своих аргументов.

0
задан Cristobal Bahe 6 March 2019 в 16:25
поделиться