ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
904893 Топик полностью
fk0, легенда (17.02.2019 21:37, просмотров: 287) ответил Aleksey_75 на угу , только тогда передача функций без аргументов вообще компилится перестает, ошибки вываливает. Мне по сути нужен указатель которому пофиг на аргументы, тем более они один фиг отдельно передаются
Код, который генерируется для вызова функции ЗАВИСИТ от типов её аргументов. Самое элементарное, что часть аргументов передаётся в регистрах, часть кладётся в стек. Но не зная типов аргументов, вызываемая функция не сможет правильно проинтерпретировать регистры и самое главное -- стек. Потому, что она должна аргументы со стека снять ещё. И если снимет неправильно, слишком много или мало, то и вернуться назад не получится, улетишь по какому попало адресу. Исключением как раз являются функции с переменным числом аргументов: для них принято, что стек восстанавливается вызывающей функцией (потому, что вызываемая ничего об этих аргументах не знает и может обработать только часть из них). И аргументы всегда лежат только в стеке. И из функции вернуться можно всегда правильно. Но интерпретировать аргументы всё равно же нужно как-то уметь... в printf строка формата подсказывает типы аргументов, чтоб их правильно извлечь из стека. Если тебе в одну переменнную десять разных типов функций нужно присваивать, то может просто сделать union...
[ZX]