Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Скажем так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. но если аргументы разных типов va_test(4, 1, "аа" , 2, "бб" ) как мне проверить тип аргумента? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 13:40 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
jenya7 так же как это сделано в printf или вариадик темплеты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 13:57 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
ИМХО по хорошему надо в структуру собрать все твои аргументы и ее передавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:00 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Dima T ИМХО по хорошему надо в структуру собрать все твои аргументы и ее передавать. и включить в структуру тип аргумента? громоздко как то получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:10 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
OoCc jenya7 так же как это сделано в printf или вариадик темплеты. я посмотрел на сорцы printf. отхожу от шока... но принцип понятен - %s - означает строку, %d - означает число и так далее. наверно нужно делать как Dima_T советует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:13 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
jenya7 OoCc jenya7 так же как это сделано в printf или вариадик темплеты. я посмотрел на сорцы printf. отхожу от шока... и учти в printf() можно элементарно накосячить, для контроля этого в компиляторах есть специальные флаги для проверки во время компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:15 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
jenya7 Dima T ИМХО по хорошему надо в структуру собрать все твои аргументы и ее передавать. и включить в структуру тип аргумента? громоздко как то получается... Если тип заранее неизвестен, то по другому никак. В параметрах приходят только значения, а тип и размер задается заранее, во время компиляции. Т.е. вызываемая функция заранее знает какого типа ее параметры. Как вариант не явно наполнять указывая типы, а сделать методы: Код: plaintext 1. 2. и внутри каждого прописать добавления нужного типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:22 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
jenya7 OoCc jenya7 так же как это сделано в printf или вариадик темплеты. я посмотрел на сорцы printf. отхожу от шока... но принцип понятен - %s - означает строку, %d - означает число и так далее. наверно нужно делать как Dima_T советует. В твоём случае ненужна вся комплексити printf формата. Достаточно одного символа на параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:25 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Dima T ИМХО по хорошему надо в структуру собрать все твои аргументы и ее передавать. а в функцию либо массив указателей передавать, либо сами указатели, если хочется va_*** поюзать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:26 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
OoCc jenya7 пропущено... я посмотрел на сорцы printf. отхожу от шока... но принцип понятен - %s - означает строку, %d - означает число и так далее. наверно нужно делать как Dima_T советует. В твоём случае ненужна вся комплексити printf формата. Достаточно одного символа на параметр. А как оно в памяти расположится? Разные типы могут быть разного размера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:32 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Dima T OoCc пропущено... В твоём случае ненужна вся комплексити printf формата. Достаточно одного символа на параметр. А как оно в памяти расположится? Разные типы могут быть разного размера. так же как и printf разбирается с char и double. Строки и комплексные типы - передаются по указателю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:40 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
я тут накропал. а если так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 15:12 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
поменял на войдовый указатель Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. проверяю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. должен увидеть 1aa1234bb но вижу 87bb 29491202949120 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 16:21 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
так работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. напрягает инициализация и расстановка аргументов. но тут как мне кажеться упростить не удасться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 18:01 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
jenya7 так работает ... Это херь какая-то ((( Зачем передавать массив элементами ? Есть еще куча претензий к твоему коду, завтра сформулирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 20:09 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Почему 1 ? у тебя же выше имена типов определены, используй их, а не магические числа Код: plaintext 1. Как уже написал тут непонятно зачем переменное число параметров Код: plaintext 1. Достаточно указателя на массив и размера Код: plaintext 1. Зачем куча приведений? Накосячишь, а компилятор не предупредит, т.к. будет считать что так задумано. Используй union Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Далее Код: plaintext 1. 2. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 06:38 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Dima T Достаточно указателя на массив и размера Код: plaintext 1. Первый аргумент в функции должен быть количество аргументов. И потом если указатель на массив то void MyPrintf(VAR *var, int var_size, char *str) Но когда я передаю указатель MyPrintf(5, str, vars); то не работает не умеет var = va_arg(valist, VAR); брать аргументы по указателю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 09:12 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
jenya7 Первый аргумент в функции должен быть количество аргументов. И потом если указатель на массив то void MyPrintf(VAR *var, int var_size, char *str) Но когда я передаю указатель MyPrintf(5, str, vars); то не работает не умеет var = va_arg(valist, VAR); брать аргументы по указателю. Зачем va_arg? У тебя фиксированное количество параметров. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 09:43 |
|
||
|
Переменное число аргументов в функции
|
|||
|---|---|---|---|
|
#18+
Dima T jenya7 Первый аргумент в функции должен быть количество аргументов. И потом если указатель на массив то void MyPrintf(VAR *var, int var_size, char *str) Но когда я передаю указатель MyPrintf(5, str, vars); то не работает не умеет var = va_arg(valist, VAR); брать аргументы по указателю. Зачем va_arg? У тебя фиксированное количество параметров. Код: plaintext 1. 2. 3. 4. Ой. Действительно. Спасибо. Как всегда супер. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 09:59 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39928453&tid=1339823]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 260ms |

| 0 / 0 |
