С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
remix.remix
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 1
#1

Встраивание результата функции в место ее вызова - C++

04.09.2012, 01:01. Просмотров 1072. Ответов 24
Метки нет (Все метки)

Здравствуйте. Можно ли как-то реализовать чтобы перед компиляцией программы выполнолась функция, а ее результат встраивался в место ее вызова? Знаю что для фунций есть классификатор inline, но тогда в место вызова встраивается сама функция, а мне нужен именно результат. Например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void func(int i)
{
if(i==1)
n = 1;
else
n = 0;
}
 
int main(void)
{
int i = 1;
func(i);
}
И вот нужно, чтобы при компиляции вместо "func(i);" стояло "n = 1;".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2012, 01:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Встраивание результата функции в место ее вызова (C++):

оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ - C++
оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее...

Вызова функции - C++
Как сделать, что бы MAIN предназначался только для вызова функции(+нельзя использовать глобальные перемменные) Код:Список фамилий...

Абстракция вызова функции - C++
Итак я хотел бы обсудить с участниками форума такую задачу. Но перед тем как перейти к сути - замечу, что вопросы морально-этического...

Возвращение результата функции bool и использование его в функции main() - C++
У меня есть функция bool, которая имеет вид: bool Pisos(int row, int place) { if (...) return true; else return false;...

Ошибка вызова шаблонной функции - C++ - C++
Читаю Прата, остановился на таком задании: Напишите функцию с интерфейсом в старом стиле, которая имеет следующий прототип: int...

Функции. Синтаксис объявления и вызова - C++
1. Написать функцию, которая вычисляет Вариант Задание 1 площадь круга S по его радиусу R (S=R2) 2 площадь треугольника S по...

24
OhMyGodSoLong
04.09.2012, 18:31     Встраивание результата функции в место ее вызова
  #16

Не по теме:

Цитата Сообщение от Invader_Zim Посмотреть сообщение
~OhMyGodSoLong~,

Не по теме:

А как-же няшка буст? Мыж его все любим!
и еще одно: что такое DSL?

Domain specific language. Небольшой специализированный язык в языке. Я не говорю, что библиотеки должны умереть. Просто я люблю синтаксический сахар, меня расстраивает втискивание абстракций в прокрустово ложе фиксированного синтаксиса и я не считаю, что выучить небольшой специализированный язык сложнее, чем интерфейс библиотеки. Няшка буст никуда не денется, просто будет записываться эстетичнее.

Но это так, розовая мечта.

0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
04.09.2012, 18:42 #17
~OhMyGodSoLong~,

Не по теме:

А разве все долно быть легко? Это настоящие герои всегда идут в обход, а мы...

0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
04.09.2012, 18:45 #18
Invader_Zim, Во-первых до 98 С++ не был стандартизирован. Во вторых практически все люди, пишущие что-то серьезное на С++ используют boost или другую библиотеку, которая не является стандартной.
Согласен, это не типобезопасно, но это дело привычки. Кому что удобно.
О нет, это не дело привычки, это дело того, что человек не знает возможностей С++ и пытается писать что-то, что можно написать на высоком уровне, дедовскими методами (читай Си). Вообще смешивать Си и С++ код считается крайне плохой практикой. Так что тут не в привычке дело, а в желании побыдлокодить.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.09.2012, 18:48 #19
Цитата Сообщение от remix.remix Посмотреть сообщение
И вот нужно, чтобы при компиляции вместо "func(i);" стояло "n = 1;".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define JA_GRISCHA!!!
...
void func(int i)
{
if(i==1)
n = 1;
else
n = 0;
}
 
int main(void)
{
int i = 1;
#ifdef JA_GRISHA!!!
n = 1;
#else
func(i);
#endif
}
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
04.09.2012, 18:51 #20
ForEveR, У каждого свои взгляды на вопрос. И от буста я не открещиваюсь, сам его использую. Я знаю что чуть менее чем полностью буст состоит из шаблонов. но моего отношения к излиней абстракции это не меняет.

Добавлено через 1 минуту
novi4ok, не, не так
C
1
2
3
#define N 1
...
i=N

И я не буду отказываться от дефайнов! Ибо чуть менее чем весть кроссплатформенный код состоит из дефайн-салата
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
04.09.2012, 18:56 #21
Invader_Zim, Он состоит не из #define салата, а из #ifdef салата, что является несколько разными вещами, не находите? А #define-ы определяются во время сборки программы, обычно в одном config файле.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.09.2012, 18:56 #22
Цитата Сообщение от Invader_Zim Посмотреть сообщение
И я не буду отказываться от дефайнов! Ибо чуть менее чем весть кроссплатформенный код состоит из дефайн-салата
логично. если отказываться в с++ от всего, что есть также в си, то от него ничего не останется вообще. ну, шаблоны разве.
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
04.09.2012, 18:58 #23
ForEveR, мда, holy war runtime error: Invalid argument
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
04.09.2012, 19:03 #24
Invader_Zim, Ну я же вроде не говорил, что макросы не используются вообще, я говорил что их по возможности стараются избегать. Выборочная компиляция, как раз является областью, где без макросов - никак.
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
04.09.2012, 19:43 #25
ForEveR, Я знаю, я в пылу убеждения в своей правоте дерективы перепутал. Вот и инфалид агрумент)
0
04.09.2012, 19:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2012, 19:43
Привет! Вот еще темы с ответами:

Ошибка вызова шаблонной функции - C++
Вообщем у меня вопрос такой: Использую MVS 2010. Пишу шаблон функции для поиска максимального из двух чисел: template <class T> T...

Макрос вызова функции без скобок - C++
Вообщем хочется получить что-то вроде этого: #include <iostream> using namespace std; #define For ....... int main() { ...

Не понятный глюк вызова перегруженной функции - C++
void f (std::wfstream&, bool, const char*, size_t , size_t); void f (std::wfstream&, int, const char*, size_t , size_t); void f ...

Стрелка в описании функции обратного вызова - C++
#include <iostream> #include <algorithm> std::string s = "hello"; auto end = std::unique(s.begin(), s.end(), (char a, char b) -> bool...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.