Сергей Борщ 119 17 мая, 2017 Опубликовано 17 мая, 2017 · Жалоба Во-первых - перегрузка. И я писал в исходном сообщении, что это нежелательный путь, так как по сути - будут две одинаковые функции. Тогда уж лучше использовать вариант с inline одной из них. Что мешает объединить? Т.е. перегруженная функция, которая просто является inline-const-оберткой для второй? Кроме принципиального нежелания переименовывать исходник .c->.cpp других препятствий не видно. Видно стойкое желание колоться, плакать, но продолжать кушать кактус. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 17 мая, 2017 Опубликовано 17 мая, 2017 · Жалоба Что мешает объединить? Т.е. перегруженная функция, которая просто является inline-const-оберткой для второй? Кроме принципиального нежелания переименовывать исходник .c->.cpp других препятствий не видно. Видно стойкое желание колоться, плакать, но продолжать кушать кактус. Я уже писал выше, что. То что inline-тся оно будет только при уровне оптимизации High. Ничего страшного конечно, но ведь само inline - оно по любому опционально для компилятора. Т.е. - он может в любом случае понаделать лишних переходов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 17 мая, 2017 Опубликовано 17 мая, 2017 · Жалоба Ничего страшного конечно, но ведь само inline - оно по любому опционально для компилятора. Т.е. - он может в любом случае понаделать лишних переходов. Патологический перфекционизЬм детектед! Срочно вызывайте санитаров Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 11 января, 2018 Опубликовано 11 января, 2018 (изменено) · Жалоба Под рукой нет компилятора, но, на мой взгляд, было бы хорошо подумать над передачей не указателя, а указателя на указатель: int Func(const char **str) В качестве параметров, опять же, либо char*, либо const char* - приведется автоматически, а в теле изменяете *str. В возвращаемом значении возвращаете, получилось сдвинуть или вылезли за границу строки... Оно? P.S. Только щас обратил внимание на дату сообщения... Сорри :) Изменено 11 января, 2018 пользователем Arlleex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 11 января, 2018 Опубликовано 11 января, 2018 · Жалоба Под рукой нет компилятора, но, на мой взгляд, было бы хорошо подумать над передачей не указателя, а указателя на указатель: И сделать текст исходника ещё более громоздким? И получить более громоздкий скомпилированный код? Если было например: char const *s; ... ; s = (char const *)StrFunc(s + 5); то теперь будет ещё более громоздкая запись с сохранением в промежуточную переменную перед вызовом и чтением из неё - после. Получим гораздо более развесистый текст. А уж код какой получится!.... Вместо простого ADDS R0, Rx, #5 перед вызовом, теперь будет: выделение места на стеке + запись в стек (s+5) + чтение из памяти внутри функции + удаление стекового фрейма после вызова функции - команд получается в несколько раз больше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться