Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как передать в функцию заранее неизвестное число параметров? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент http://www.cyberforum.ru/cpp-beginners/thread1220889.html
Задание: написать программу согласно заданию. Дана целочисленная матрица размера 5х5. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.
C++ Сформировать массив S, состоящий из одинаковых элементов исходных массивов 2 массива X, Y, каждый из 10 эл-в. Сформировать массив S, состоящий из одинаковых эл-в исходных массивов. #include<iostream> #include<stdio.h> #include<conio.h> #include<stdlib.h>... http://www.cyberforum.ru/cpp-beginners/thread1220875.html
C++ Программа входа и регистрации
Здравствуйте! Я написал для себя программку: она записывает логин и пароль в файл, а затем сверяет его в следующий раз при логине. Проблема состоит в том что логин и пароль сохраняются...
C++ Дано число k и матрица 3x3. Заменить все элементы ниже побочной диагонали на число k
Дано число k и матрица 3x3. Заменить все элементы ниже побочной диагонали на число k
C++ Дана матрица размера N. Упорядочить массив по возрастанию только для чётных элементов http://www.cyberforum.ru/cpp-beginners/thread1220864.html
Дана матрица размера N. Упорядочить массив по возрастанию только для чётных элементов
C++ Образовать из матрицы 2 массива с положительными элементами и отрицательными элементами по возрастанию Дана матрица размера N. Образовать из него 2 массива с положительными элементами и отрицательными элементами по возрастанию. Помогите пожалуйста решить задачу, при возможности использовать... подробнее

Показать сообщение отдельно
DrOffset
7158 / 4299 / 972
Регистрация: 30.01.2014
Сообщений: 7,107
01.07.2014, 23:58
Цитата Сообщение от ZwHook Посмотреть сообщение
Вы меня все таки все обманули в длл пишем:
Хехе. Вообще-то это совсем другая ситуация. Не зря же спрашивали про сигнатуру. Количество аргументов в этом варианте фиксировано.
Если так, то можно вообще без асма:
C++
1
2
3
4
5
6
7
8
9
10
11
typedef void (_stdcall *F)(...);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a = 5;
    int b = 8;
    HMODULE hnd = LoadLibraryA("test.dll");
    F f=(F)GetProcAddress(hnd,"_writefunk@8");
    f(a, b);
    return 0;
}
А если брать вариант, какой изначально тобой озвучивался:
C++
1
2
3
4
5
void func(int n, ...)
{
 
    f(/*что сюда писать?*/);
}
то средствами С++ сделать ничего действительно нельзя (никакого обмана). Для распаковки требуется va_list, которого тут нет. А в цикле через va_arg запихать параметры в функцию не получится (нет механизма). Я думаю можно было бы придумать иной вариант,
C++
1
call(format).arg(1).arg(2).arg(3);
но не уверен, что он тебе подошел бы. Но по крайней мере мы бы остались в рамках чистого С++ и без использования С++11.
Что касается твоего варианта с ассемблером, то по поводу него вообще никто не высказывался. Ассемблер - это другой разговор совсем. Естественно будет работать, если сделать получение параметров на асме.
Так что про "обманули" - это неправда
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru