Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Artmal
86 / 85 / 55
Регистрация: 14.11.2015
Сообщений: 1,017
1

Можно ли как-то получить доступ к аргументам у функции у которой нет параметров?

21.06.2018, 20:15. Просмотров 255. Ответов 3
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
void foo();
 
int main(void)
{
    foo(123, 123, 3412);
}
 
void foo()
{
    //can access arguments?
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2018, 20:15
Ответы с готовыми решениями:

Как получить доступ к элементам массива, вне предела функции, в которой создан массив?
Вопрос в топике. namespace q { public partial class Form1 : Form { private...

Есть функция, в прототипе которой несколько параметров перечислены через запятую. Можно ли в теле функции обработать их, как массив?
Например, double max(double x1, double x2, double x3, double x4) { int m; int i; double *a;...

Как можно собрать приложение, которое можно установить на машине, на которой нет VS и MSSQL?
Здравствуйте. Подскажите, пожалуйста, как можно собрать приложение, которое можно установить на...

Как можно получить список параметров хранимой процедуры?
Добрый день! Хочу из приложения на Java вызвать любую хп, которая хранится на sql server (MSSQL...

Доступ к выходным аргументам
Ребята, доброй ночи! Есть такая задача, нужна помощь, пожалуйста: Существуют две функций: ...

3
Ovederax
222 / 153 / 104
Регистрация: 30.04.2017
Сообщений: 323
Записей в блоге: 1
25.06.2018, 10:01 2
Artmal,
Чёто никто не ответил...
Обычно в таком случае используется функция с переменным числом аргументов, но для этого нужно передать хоть один аргумент...
Пример:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdarg.h>
 
int sum(int count, ...)
{
    va_list ap;
 
    int sum = 0;
    int j;
    /* Требуется последний известный аргумент (чтобы получить адрес первого неизвестного) */
    va_start(ap,count);
    for (j = 0; j < count; j++)
        sum += va_arg(ap, int); /* Увеличивает ap до следующего аргумента. */
 
    va_end(ap);
    return sum;
}
int main()
{
    int a = sum(6,  1,2,3,4,5,6);
    printf("%d",a);
}
Если все же нужна именно пустое место в функции без единого параметра foo(...)
Есть мысль насчет того, чтобы использовать стек функции, который должен содаваться при каждом вызове функции. В этом случае нужно будет, наверно, лезть в ассемблер, чтобы получить указатель на верхушку стека... Статья на хабре.
В том, что такое сработает - я не уверен.

Добавлено через 44 минуты
UPD
на си пишет для foo(...) error: ISO C requires a named argument before '...' - нужен аргумент
на с++ не пишет ошибки, поэтому если будете пробывать - используйте c++ компилятор
0
WWH
4 / 4 / 2
Регистрация: 23.12.2016
Сообщений: 124
29.06.2018, 20:29 3
Является ли функция с переменным числом аргументов вариантом перегрузки для процедурного языка?
0
Ovederax
222 / 153 / 104
Регистрация: 30.04.2017
Сообщений: 323
Записей в блоге: 1
30.06.2018, 08:37 4
Цитата Сообщение от WWH Посмотреть сообщение
Является ли функция с переменным числом аргументов вариантом перегрузки для процедурного языка?
Пример - printf(char*,...)
Так как смысл перегрузки функции - различное поведение в зависимости от аргументов, то можно сказать ДА

С другой стороны printf - одна функция c динамическим определением аргументов через строку, а под перезагрузкой понимается множество одноименных функций, которые вызываются в зависимости от аргуметов, поэтому НЕТ.
Перегрузка процедур и функций — возможность использования одноимённых подпрограмм: процедур или функций в языках программирования. - wiki
Я бы сказал скорее нет чем да. 2-ой аргумент перевешивает первый.
0
30.06.2018, 08:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2018, 08:37

Нестандартный вопрос.Как получить доступ к переменным функции из другой функции?
&lt;?php declare(ticks=1); function tick_handler() { print_r($_GLOBALS);//Печатает все переменные...

Как можно получить доступ к файлу по FTP
Например есть сайт типо name.narod.ru. Пароль известен. Как получить доступ к файлу на сайте?

Ошибка C2470. Выглядит как определение функции, но нет списка параметров
Работаю в Visual studio 2008. Язык C++. Проблема следующая. При создании нового класса и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru