реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Возврат значения char */char const *
Сергей Борщ
сообщение May 17 2017, 11:09
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (jcxz @ May 17 2017, 10:09) *
Во-первых - перегрузка.
И я писал в исходном сообщении, что это нежелательный путь, так как по сути - будут две одинаковые функции. Тогда уж лучше использовать вариант с inline одной из них.
Что мешает объединить? Т.е. перегруженная функция, которая просто является inline-const-оберткой для второй? Кроме принципиального нежелания переименовывать исходник .c->.cpp других препятствий не видно. Видно стойкое желание колоться, плакать, но продолжать кушать кактус.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 17 2017, 11:21
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Сергей Борщ @ May 17 2017, 13:09) *
Что мешает объединить? Т.е. перегруженная функция, которая просто является inline-const-оберткой для второй? Кроме принципиального нежелания переименовывать исходник .c->.cpp других препятствий не видно. Видно стойкое желание колоться, плакать, но продолжать кушать кактус.

Я уже писал выше, что. То что inline-тся оно будет только при уровне оптимизации High.
Ничего страшного конечно, но ведь само inline - оно по любому опционально для компилятора. Т.е. - он может в любом случае понаделать лишних переходов.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 17 2017, 11:26
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(jcxz @ May 17 2017, 14:21) *
Ничего страшного конечно, но ведь само inline - оно по любому опционально для компилятора. Т.е. - он может в любом случае понаделать лишних переходов.

Патологический перфекционизЬм детектед! Срочно вызывайте санитаров biggrin.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jan 11 2018, 19:48
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Под рукой нет компилятора, но, на мой взгляд, было бы хорошо подумать над передачей не указателя, а указателя на указатель:
Код
int Func(const char **str)

В качестве параметров, опять же, либо char*, либо const char* - приведется автоматически, а в теле изменяете *str. В возвращаемом значении возвращаете, получилось сдвинуть или вылезли за границу строки... Оно?

P.S. Только щас обратил внимание на дату сообщения... Сорри sm.gif

Сообщение отредактировал Arlleex - Jan 11 2018, 19:51
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 11 2018, 21:30
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Arlleex @ Jan 11 2018, 21:48) *
Под рукой нет компилятора, но, на мой взгляд, было бы хорошо подумать над передачей не указателя, а указателя на указатель:

И сделать текст исходника ещё более громоздким? И получить более громоздкий скомпилированный код?
Если было например:
char const *s; ... ; s = (char const *)StrFunc(s + 5);
то теперь будет ещё более громоздкая запись с сохранением в промежуточную переменную перед вызовом и чтением из неё - после.
Получим гораздо более развесистый текст. А уж код какой получится!.... Вместо простого ADDS R0, Rx, #5 перед вызовом, теперь будет: выделение места на стеке + запись в стек (s+5) + чтение из памяти внутри функции + удаление стекового фрейма после вызова функции - команд получается в несколько раз больше.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 15:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016