|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.02.2015, 19:03 | #1 |
Новичок
Джуниор
Регистрация: 22.02.2015
Сообщений: 2
|
Передача ссылки на результат выполнения вложенной функции прямо в аргументе
Например, чтобы получить текущее время в C++ в читаемом виде можно написать следующую конструкцию:
time_t t01 = time(NULL); struct tm * t02 = localtime(&t01); char * t03 = asctime(t02); Используется три типа данных, причем функция localtime работает только со ссылкой на time_t. А можно ли это же самое записать в одну строку? То есть ясно, как это сократить до двух строк: time_t t01 = time(NULL); char * t03 = asctime(localtime(&t01)); Но можно ли как-то, когда нужна ссылка на результат выполнения функции, сразу же её в аргумент вписывать, что-то вроде: char * t03 = asctime(localtime(&time(NULL))); Естественно, &time(NULL) нельзя писать, но может есть какое-то синтаксическое правило, корректно выражающее эту мысль? Хотя бы в какую сторону гуглить про возможность/невозможность написания подобных конструкций, поскольку формулировка правильного запроса из-за дилетантизма осложняется. |
25.02.2015, 20:36 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
1. Зачем?
2. Почему нельзя? Кто запретил? Пробовали вообще свой вариант скомпилить? На что ругается? |
25.02.2015, 22:03 | #3 | |
Новичок
Джуниор
Регистрация: 22.02.2015
Сообщений: 2
|
Цитата:
time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "The current date/time is: %s", asctime (timeinfo) ); Пять строчек для элементарного вывода даты? Почему нельзя то же самое компактнее? И так ведь везде. Можно, конечно, и другие библиотеки использовать, но для начала хочется стандартными средствами обойтись. 2. Трехстрочный и двухстрочный варианты - компилируются нормально, а однострочный линуксовский gcc не признает на основании того, что "lvalue required as unary ‘&’ operand", а виндосовский Visual Studio - потому что "выражение должно быть левосторонним значением или обозначением функции". Поэтому и возник вопрос о возможности однострочной записи, без отдельного вычисления "time_t t01 = time(NULL)" с последующей на него ссылкой из localtime(). На текущем уровне собственного ликбеза кажется, что так в С++ не делают, но может это всё моё же невежество в тематике синтаксиса ссылок и указателей. |
|
26.02.2015, 07:44 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Да. Действительно был не прав, в плюсах так низя.
Создайте инлайн функцию для этих строк, если так напрягает. Плюсы - такие плюсы. |
26.02.2015, 08:02 | #5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
А причем тут плюсы, если вы рассматриваете С код и С функции?
|
26.02.2015, 08:07 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
В плюсах же тоже получается низя получать указатели на результат функции. Понятно, что можно переделать функции эти под такое использование и всё будет путём.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при вложенной функции | DKENT | PHP | 4 | 06.06.2012 06:48 |
Не успеваю получить результат выполнения функции в процедуре | Den7656 | Общие вопросы Delphi | 15 | 12.09.2011 11:54 |
Результат выполнения программы | g001501 | Общие вопросы C/C++ | 19 | 03.11.2010 21:16 |
Определить результат выполнения программы. | Joker<777> | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 23.04.2010 02:15 |
вызов вложенной функции | veter_s_morya | PHP | 1 | 12.11.2009 11:33 |