Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685

Размещение функции в препроцессоре

13.12.2017, 15:25. Показов 1380. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такой вопрос возник можно ли в препроцессор запихнуть какую либо функцию, допустим функцию создания и заполнения массива рандомными числами.?
Р.S.
Коментарии типа ты баран или дебил тоже принимаются во внимания если вы их аргументируете!)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2017, 15:25
Ответы с готовыми решениями:

Сравнение в препроцессоре
нужна условная компиляция корректна ли такая конструкция (утрирую) #define A 10 #define B 10 #if A==B .............. #endif ...

@media в препроцессоре Sass
Непонятно, как записать корректно запрос в Sass (не в Scss): @media screen and (min-width: 320px) and (max-width: 580px) Тяжело...

Размещение результатов табулирования функции в TextArea
Все привет! Возникла проблема при написании программы. Суть в том, что мне нужно на определенном интервале, к примеру с шагом 0.2...

9
16 / 17 / 3
Регистрация: 23.09.2017
Сообщений: 39
13.12.2017, 15:27
Лучший ответ Сообщение было отмечено Esso11 как решение

Решение

Цитата Сообщение от Esso11 Посмотреть сообщение
У меня такой вопрос возник можно ли в препроцессор запихнуть какую либо функцию, допустим функцию создания и заполнения массива рандомными числами.?
Препроцессор выполняет текстовую замену, так что вполне может подставлять нужный фрагмет кода в указанное место.
Вопрос лишь зачем это необходимо?
Цитата Сообщение от Esso11 Посмотреть сообщение
Коментарии типа бы баран или дебил тоже принимаются во внимания если вы их аргументируете!)
Из унитаза воду пьешь? Нет? Значит рога бараньи мешают!
1
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
13.12.2017, 15:31
Шаблон - автоматизация копи-пасты. В шаблоне можно реализовать всё то, что можно сделать вручную, использовав функцию текстового редактора "заменить всё", и чуть больше. Так что если придумаешь что и как заменять на функцию - почему б и нет?
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
13.12.2017, 15:32  [ТС]
LimeBush, а тогда просьба если не трудно покажи как выглядит код такого макроса? учу возможности препроцессора, а знаю только как заменить их какие то ключевые слова....
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
13.12.2017, 15:34
Esso11, ну так на твою функцию тоже нужно что-то заменять. Если заменять нечего - то и макрос применён не будет.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
13.12.2017, 15:34  [ТС]
TRam_, мне бы посмотреть как препроцессор создает макросы.... я в эту сторону клоню, но неудобно просить писать код... может у народа дел много, а я тут со своей ерундой
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
13.12.2017, 15:38
Цитата Сообщение от Esso11 Посмотреть сообщение
мне бы посмотреть как препроцессор создает макросы
Макросы можешь создать только ты сам, а препроцессор их обрабатывает. http://www.opennet.ru/docs/RUS/cpp/cpp-5.html
1
16 / 17 / 3
Регистрация: 23.09.2017
Сообщений: 39
13.12.2017, 15:39
Цитата Сообщение от Esso11 Посмотреть сообщение
учу возможности препроцессора
На форуме наткнулся на полезный для новичков блог: https://www.cyberforum.ru/blogs/18334/blog100.html
Советую посмотреть другие блоги этого автора, человек дело пишет.
Цитата Сообщение от Esso11 Посмотреть сообщение
а тогда просьба если не трудно покажи как выглядит код такого макроса?
А что должно делаться-то? Вообще, я бы не советовал делать что-то подобное без необходимости.
Запомните, что явное действие почти всегда лучше неявного.
1
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
13.12.2017, 16:28  [ТС]
LimeBush, TRam_, спасибо ребята за разъяснения и литературу!!!
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
13.12.2017, 16:51
Цитата Сообщение от Esso11 Посмотреть сообщение
рандомными числами.?
сгенерировать SEED (циферка, которая начинает псевдо-рандомную последовательность)
исключительно средством самого препроцессора не получится.

(но можно сделать это в компал-тайме)

в остальном - без проблем:

http://rextester.com/TZI38116


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Pseudo random number range.
#define PP_RAND_MIN 0
#define PP_RAND_MAX 100
 
// Pseudo random number seed.
#define PP_RAND_SEED 1
 
//=================================================
 
#include <boost/preprocessor/slot.hpp>
 
#ifndef PP_RAND_SEED
#define PP_RAND_SEED    (((PP_RAND_MIN + PP_RAND_MAX) * 0x1f7) ^ 0x1e3f75a9)
#endif
 
#define BOOST_PP_VALUE ((PP_RAND_SEED * 214013 + 2531011) % 65536)
#include BOOST_PP_ASSIGN_SLOT(1)
#undef BOOST_PP_VALUE
#undef PP_RAND_SEED
#define PP_RAND_SEED    BOOST_PP_SLOT(1)
 
#define BOOST_PP_VALUE (PP_RAND_MIN + PP_RAND_SEED % (PP_RAND_MAX - PP_RAND_MIN))
#include BOOST_PP_ASSIGN_SLOT(2)
#undef BOOST_PP_VALUE
 
#ifdef PP_RAND
#undef PP_RAND
#endif
 
#define PP_RAND BOOST_PP_SLOT(2)
 
#define dSTRINGIFY_(a) #a
#define dSTRINGIFY(a) dSTRINGIFY_(a)
 
 
//=================================================
#include <iostream>
 
int main()
{
    // Got it!
    #pragma message("PP_RAND value:" dSTRINGIFY(PP_RAND))
    
    std::cout << "rand = " << dSTRINGIFY(PP_RAND) << std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2017, 16:51
Помогаю со студенческими работами здесь

"Циклы" на препроцессоре
Хотелось данную информацию включить в блог, но пока не понимаю, как это аккуратно сделать. А потому просто тему помещу на форум, а в блоге...

Разработка функции (размещение строки s1 в середине строки s2 длиной l)
Здравствуйте! Собственно, дано задание разработать функцию: Функция Center(s1,s2,l) Назначение: центрирование — размещение строки s1 в...

размещение
помогите написать программу перебора всех возможных способов m предметов по n ящикам, не более чем по одному в ящик. динные должны браться...

Размещение
Разместить 6 девчонок , на 4 мальчика? Сколько способов?

Размещение m оп n
Добрый день, есть вот такая задача: Не могу понять как должен работать этот алгоритм, вообщем сессия :( помогите добрым...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru