Форум программистов, компьютерный форум 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> #include<iomanip> using namespace std; main() http://www.cyberforum.ru/cpp-beginners/thread1220875.html
C++ Программа входа и регистрации
Здравствуйте! Я написал для себя программку: она записывает логин и пароль в файл, а затем сверяет его в следующий раз при логине. Проблема состоит в том что логин и пароль сохраняются кракозяброй(ввожу по английски), и как результат не может сравнить с тем чем ввожу при логине. Вот код: #include <iostream> #include <cstdlib> #include <string> #include <fstream> using namespace std; ...
C++ Дано число k и матрица 3x3. Заменить все элементы ниже побочной диагонали на число k
Дано число k и матрица 3x3. Заменить все элементы ниже побочной диагонали на число k
C++ Дана матрица размера N. Упорядочить массив по возрастанию только для чётных элементов http://www.cyberforum.ru/cpp-beginners/thread1220864.html
Дана матрица размера N. Упорядочить массив по возрастанию только для чётных элементов
C++ Образовать из матрицы 2 массива с положительными элементами и отрицательными элементами по возрастанию Дана матрица размера N. Образовать из него 2 массива с положительными элементами и отрицательными элементами по возрастанию. Помогите пожалуйста решить задачу, при возможности использовать максимально простой код подробнее

Показать сообщение отдельно
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
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.
Что касается твоего варианта с ассемблером, то по поводу него вообще никто не высказывался. Ассемблер - это другой разговор совсем. Естественно будет работать, если сделать получение параметров на асме.
Так что про "обманули" - это неправда
 
Текущее время: 04:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru