Форум программистов, компьютерный форум CyberForum.ru

Записать правильно встраиваемую функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти сумму ряда с точностью eps http://www.cyberforum.ru/cpp-beginners/thread666935.html
Найти сумму ряда с точностью eps , общий член которого равен an=n!/2n! . Точность считается достигнутой, если следующий член последовательности меньше заданного .
C++ Вычислить значение выражения (исправить код) Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c). Вот что я написал: #include <iostream> using namespace std; int min(int,int,int); void main(){ int a,b,c,y; cin>>a>>b>>c; y=min(a,b+c)+max(a*c,b)-min(a*2,c); cout<<y; http://www.cyberforum.ru/cpp-beginners/thread666903.html
C++ Анализ треугольника и вычисление его площади
1. Ввести три числа(три стороны треугольника) a,b,c в порядке возрастания. Выдать a,b,c на экран 2. Если a<=c-b то треугольник не существует. Выдать информацию об этом и закончить вычисления. 3. Если c>=a+b, треугольник не существует. Выдать информацию об этом и закончить вычисления. 4. Если a=b=с , то треугольник равносторонний. Выдать информацию об этом и перейти к пункту 8. 5. Если a=b...
Даны натуральное n и целые a1, a2, ., an. Найти сколько чисел входят в последовательность более чем по 1 разу C++
Нужна помощь в написании задачи с массив. Условие: Даны натуральное n и целые a1, a2, ..., an. Внутри последовательности могут быть повторяющихся членов. Найти сколько чисел входят в последовательность более чем по 1 разу.
C++ Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c) http://www.cyberforum.ru/cpp-beginners/thread666894.html
Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c). Как эту программу реализовать в код?
C++ Массив типа char без ограничения Помогите создать массив именно типа char без четкого ограничения. Мне говорили, что это можно реализовать так. Но если я так делаю, то оно выдает ошибку. #include <iostream> using namespace std; void main () { char * word; gets ( word ); подробнее

Показать сообщение отдельно
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
09.10.2012, 13:19     Записать правильно встраиваемую функцию
Разные источники предлагают немного отличающиеся записи:

1) Учебник Либерти так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
 
inline int Double(int); // прототип функции
 
int main()
{
    int target;
 
    cout << "Enter a number to work with: ";
    cin  >> target;
    
    target = Double(target);
    cout << "Target: " << target << endl;
 
    target = Double(target);
    cout << "Target: " << target << endl;
 
    target = Double(target);
    cout << "Target: " << target << endl;
    
    char response;        
    std::cin >> response; 
    
    return 0;
}
 
int Double(int x)
{
    return 2*x;
}
То есть слово inline перед прототипом функции, а реализация функции как обычно.

2) Учебник Шилдт:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
inline int Double(int x)
{
    return 2*x;
}
 
int main()
{
       /* ... */    
}
3) В Интернете такой вариант видел:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int Double(int); // прототип функции
 
int main()
{
       /* ... */    
}
 
inline int Double(int x)
{
    return 2*x;
}
4) Сейчас сам написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
inline int Double(int); // прототип функции
 
int main()
{
       /* ... */    
}
 
 
inline int Double(int x)
{
    return 2*x;
}
Причём все варианты компилируются без ошибок и работают. Но при этом я же не знаю, везде там будет встраиваемая функция или нет? Может компилятор видит неправильную запись и просто игнорирует её без предупреждения и обращается к функции как обычно, я то не в курсе.

Вот и хотел спросить: что, получается, ключевое слово inline можно пихать куда угодно? Хоть в прототип функции, хоть в её реализацию, или в оба места. Как угодно что ли? Странно, что в учебниках по С++ ничего не сказано, про такие вольности.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru