[ZX]
-
- Преобразовать char в wchar, а затем пользоваться одной функцией для wchar. А затем, если надо, преобразовать обратно. - бомж(29.11.2012 02:49)
- До чего людей доводит объектное программирование. Говорят сложно перейти к объектному мышлению. Похоже обратная дорога не менее терниста :) Сделай две функции, сложи их в один файл и заоптимизируй его по размеру кода по самое небалуй. Получишь код Codavr(35 знак., 27.11.2012 21:25 - 21:28)
- Для перегруженных можно сделать ровно тоже самое. - =AlexD=(27.11.2012 21:56)
- Это не plain C, это уже ассемблер какой-то. Профессионального уровня, конечно. - SciFi(27.11.2012 16:43)
- А можно поинтересоваться причинами, по которым функция должна быть одна, а не две разные? - =AlexD=(27.11.2012 16:34)
- Написал бы две разные, первое что приходит в голову. Но практически это неудобно по двум причинам: 1) у них будет 90% общего (а lexical scoping
GCC не умеет), 2) сами эти функции придётся различать из тех мест где они вызываются, в fk0(60 знак., 27.11.2012 17:34)- 2) - ну Вы же в любом случае различаете сейчас в каком указателе нужно передавать строку, так что ничего по сути не изменится 1) - проблема ИМХО решаемая только шаблонными функциями С++, что тоже не панацея в случае нехватки памяти. - =AlexD=(27.11.2012 18:33)
- Вместо шаблона можно навернуть макрос, но это совсем уныло. - =AlexD=(27.11.2012 18:34)
- Очевидные ответы, очевидные вопросы: SciFi(137 знак., 27.11.2012 17:42)
- 1) в C нельзя вложенные функции как в паскале, например. Общая подфункция не будет иметь доступа к переменным вызывающей функции или их передавать через структуру или ещё как. 2) это как раз и нестесственно -- в C++ для этого есть понятие fk0(59 знак., 27.11.2012 18:13 - 18:16)
- Ответов по-прежнему нет: SciFi(228 знак., 27.11.2012 22:50)
- перегружаемые функции - это две разные функции, в вашем случае это не то. - =AlexD=(27.11.2012 18:28)
- 1) в C нельзя вложенные функции как в паскале, например. Общая подфункция не будет иметь доступа к переменным вызывающей функции или их передавать через структуру или ещё как. 2) это как раз и нестесственно -- в C++ для этого есть понятие fk0(59 знак., 27.11.2012 18:13 - 18:16)
- 2) - ну Вы же в любом случае различаете сейчас в каком указателе нужно передавать строку, так что ничего по сути не изменится 1) - проблема ИМХО решаемая только шаблонными функциями С++, что тоже не панацея в случае нехватки памяти. - =AlexD=(27.11.2012 18:33)
- Написал бы две разные, первое что приходит в голову. Но практически это неудобно по двум причинам: 1) у них будет 90% общего (а lexical scoping
- SetContext и далее работаем с одним указателем - abivan(27.11.2012 16:04)
- Все на столько плохо, что нет возможности передать рядом один байт, тип параметра? - Скрипач(27.11.2012 15:53)
- в порядке бреда предложу размещать wchar_t по четным адресам, а char по нечетным - MegaJohn(27.11.2012 15:29)
- Хорошая мысль, не бред. Я часто такой приём использую, одна задача для обработки одной очереди может получить и команду, и данные, если используется выравнивание по 4 байтам для размещения данных в очереди; если младший бит =1, значит команда. - VVB(28.11.2012 14:29)
- Более того, ARM что-то похожее делает (инструкция BX, бит Thumb). - SciFi(28.11.2012 14:45)
- либо вызывать типо MALLOC_FOR_WCHAR и MALLOC_FOR_CHAR которые выделяют в разных адресных пространствах, а конечная функция в курсе где что - MegaJohn(27.11.2012 15:31)
- Хорошая мысль, не бред. Я часто такой приём использую, одна задача для обработки одной очереди может получить и команду, и данные, если используется выравнивание по 4 байтам для размещения данных в очереди; если младший бит =1, значит команда. - VVB(28.11.2012 14:29)
- Какова разрядность указателя по сравнению с адресным пространством? Есть ли свободные биты? - vmp(27.11.2012 15:28)