[WT] [Архив] [Поиск] Главная Управление
[Совместно с Ычаном]

[Назад]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 5679)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаемые типы файлов: 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP
  • Максимально допустимый размер файлов: 10000 кБ.
  • Изображения, размер которых превышает 200 на 200 пикселей, будут уменьшены.
  • Ныне 1781 unique user posts. Посмотреть каталог
  • Радио:

Файл: 132097390841.jpg-(74.03KB, 300x225, 12119173.jpg)
5679 No. 5679 watch    
Сырна, попробуй решить задачку:
Дано: библиотечная функция вида
MyFunc (значение 1, значение 3, значение 3, указатель 1, указатель 2, указатель3, значение 4)
где значения 1-3 задают размер массивов, на первый элементы которых указывают указатели 1-3.
Задача: не меняя названия функции, добавить еще одну переменную так, чтобы сохранить совместимость со старой версией вызывающей программы.
Постите варианты решений до вечера пятницы. Если решений будет мало еще продлю сроки.
Развернуть все изображения
>> No. 5680    
Файл: 132098567026.jpg-(75.24KB, 700x680, 1320794326011-01.jpg)
5680
>Задача: не меняя названия функции, добавить еще одну переменную так, чтобы сохранить совместимость со старой версией вызывающей программы.

А потом у нас станции не выходят на заданный курс и спетники бороздят просторы мирового океана.

Собственно, солюшон:
http://www.rsdn.ru/forum/cpp/418970.1.aspx
>> No. 5681    
>>5680
Хотя, если подумать, более разумным решением будет - добавить в библиотеку новую функцию, оставив старую такой какая она есть.

http://ru.wikipedia.org/wiki/Перегрузка_операторов
>> No. 5682    
Файл: 132099355421.jpg-(27.18KB, 341x450, shaman1.jpg)
5682
ПАЧИМУ НИКТО НЕ ПРЕДЛОЖИЛ ПРОСТО КАНПИЛЯТЬ С РАЗНЫМИ КЛЮЧАМИ И ТАНЦЕВАТЬ С БУБНОМ ВОКРУГ КОМПЬЮТЕРА? Я ВСЕГДА ТАК ДЕЛАЮ И ВСЕ РАБОТАЕТ.
>> No. 5688    
MyFunc (значение 1, значение 3, значение 3, указатель 1, указатель 2, указатель3, значение 4, значение 5 = (значениепоумолчанию))
>> No. 5689    
это какая-то специальная олимпиада по информатике...
>> No. 5692    
>>5680>>5681
Запоздало уточняю условие: либа - откомпилированная DLL.
>>5689
А ТО
>> No. 5693    
Файл: 132102905145.jpg-(30.80KB, 500x308, 1320798279152.jpg)
5693
Пусть соглашение ccall
>>5692
как я не понел условие:
void __dllexport myFunc(int len1, int len2, int len3, void m1, void m2, void* m3, ?)
про значение4 ничего не сказано? Какие значения оно может принимать?
Можно было бы к "значение4" прикрутить указатель на массив чего-нибудь с NULL-терминатором.
>> No. 5694    
>>5693
Значение 4 может принимать любое значение допустимое для данного типа. Оно так же как и массивы используется программой поэтому занять его под нужды задачи нельзя. Значения с 1 по 3 - просто число элементов массива, чтобы функция не вышла за его пределы при обработке.
>> No. 5695    
>>5694
Еще очень важное дополнение: размер массива имеет тип INT-32.
>> No. 5696    
>>5695
Тогда пусть память выделена с избытком. Передаем указатель, смещенный вперед. Тогда по стольким-то отрицательным индексам можно хранить значения.
>> No. 5701    
Файл: 132104112548.jpg-(113.60KB, 1050x750, 24.jpg)
5701
>>5692
>Запоздало уточняю условие: либа - откомпилированная DLL.
Не беспокойся. Солюшены с переменным числом аргументов (плохое решение) и перегрузкой (хорошее решение) подойдут под любой язык (поддерживающий перегрузку и переменное число аргументов в функции) и любую ОС на любой архитектуре.
Но бить в бубен и надеяться, что все заработает само - тоже вполне неплохое решение.
>> No. 5702    
Файл: 132104407132.jpg-(9.89KB, 393x277, 1299957509.jpg)
5702
>>5696
Правильный ответ. Держи печеньку.
[Назад]


Удалить сообщение []
Пароль  
[Mod]