12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
1

Как объявить функцию без прототипа

01.09.2012, 20:15. Показов 3373. Ответов 24
Метки нет (Все метки)

Во всех учебниках пишут, что каждая функция должна иметь прототип. ВОт стало интересно, можно ли объявить функцию, которая не имеет прототип. Если да, то как? Покажите.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2012, 20:15
Ответы с готовыми решениями:

Как без цикла объявить?
ArrayList mat = new ArrayList; //как не делать этот цикл? for(int i=0;i<n;i++) { mat=new...

Как объявить функцию?
Подскажите, пожалуйста, как функцию function valid(idx) { var el =...

Как объявить переменную без присвоения ей значения?
Вопрос нубский, но все же как быть в ситуации когда необходимо просто объявить о существовании...

Как объявить friend функцию класса
как это оформить, чтобы работало // ----------> one.h #include "two.h" #ifndef ONE_H_INCLUDED...

24
Эксперт С++
1067 / 846 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
01.09.2012, 21:28 21
Цитата Сообщение от bgm313 Посмотреть сообщение
auto func = [](int x) -> int { return x+5; };

Если можно пояснить что это за конструкция или сказать что почитать?
Стандарт почитать С++11. В книжках пока ничего такого не описано.
0
В астрале
Эксперт С++
8042 / 4799 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.09.2012, 21:29 22
ValeryLaptev, Описано. The C++ Standard Library Second Edition Nicolai M. Josuttis
https://www.cyberforum.ru/post3367393.html
https://www.cyberforum.ru/post3367511.html
1
87 / 87 / 1
Регистрация: 19.06.2012
Сообщений: 245
01.09.2012, 21:40 23
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Я имею в виду вывести. Чтобы вообще не писать кусок (int x) -> int, в котором прописаны типы аргументов и возвращаемого значения. Исключительно по телу функции.
Ну тогда это был бы не строго типизированный язык.

Цитата Сообщение от ForEveR Посмотреть сообщение
Неверно. func не будет тем, что вы сказали. closure это совершенно отдельный тип, не указатель на функцию.
okay
0
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
01.09.2012, 21:56 24
Цитата Сообщение от PSIAlt Посмотреть сообщение
Ну тогда это был бы не строго типизированный язык.
А что не так со строгостью? Выводилка типов не должна сказать, что тип этой функции будет X → Y, где X не поддерживает умножение на число два.


Цитата Сообщение от ForEveR Посмотреть сообщение
Неверно. func не будет тем, что вы сказали. closure это совершенно отдельный тип, не указатель на функцию.
Да вроде
такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
typedef int (*func_type)(int);
 
func_type getFunc(int y)
{
  return [](int x) -> int { return 2*x; };
}
 
int main()
{
  std::cout << getFunc()(10);
}
прокатывает. Так что вполне вероятно, что лямбды — не замыкания (которые с [], а не [=] или [&]) можно по крайней мере приводить к указателям на функции. Курю стандарт пока.

Таки да. Лямбды-комбинаторы можно приводить к указателям, 5.1.2/6:
The closure type for a lambda-expression with no lambda-capture has a public non-virtual non-explicit const conversion function to pointer to function having the same parameter and return types as the closure type’s function call operator. The value returned by this conversion function shall be the address of a function that, when invoked, has the same effect as invoking the closure type’s function call operator.
0
В астрале
Эксперт С++
8042 / 4799 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.09.2012, 23:18 25
~OhMyGodSoLong~, Ну я и не спорил, что можно. Я спорил с тем, что auto выведет именно указатель на функцию.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2012, 23:18
Помогаю со студенческими работами здесь

Как правильно объявить функцию WINAPI
Здравствуйте. Я пытаюсь объявить в коде на языке C# функцию WINAPI ExtractIcon следующим...

Забыл, как объявить функцию с тем же названием?
Забыл, как объявить ещё одну функцию с тем же названием?

Можно ли объявить дружественную функцию как шаблон?
Так всё работает: template&lt;class T&gt; class random { /*всячина*/ public: friend void...

Как объявить созданную функцию, чтобы ей пользоваться?
Создал свою функцию, записал в хедере void __fastcall TForm1::test(TObject *Sender) {} прописал...

Как объявить функцию main в данном куске кода?
как объявить функцию main в данном куске кода? int len; char* str = &quot;gpDWtrjHs5Oa2YSFiaTeoQ==&quot;;...

Как объявить массивы, заполнить и передать в эту функцию
#include &lt;iostream&gt; #include &lt;unordered_set&gt; bool foo(int* arr1, size_t size1, int* arr2,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru