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

Реализовать подстановку кода с помощью препроцессора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Typedef для функций http://www.cyberforum.ru/cpp-beginners/thread1801818.html
Здравствуйте! В книге Страуструпа в качестве примера приводится typedef для указателей на функции например: typedef void(*SIG_TYP) (int) , typedef int (*CFT)(const void*, const void*) Не совсем понятно на что влияют выделеные аргументы. Если они нужны, то почему я потом могу сделать следующее объявление: SIG_TYP a(void x, char y); И компилятор это скомпилит без ошибок.
C++ Что не так с этими указателями? Всем привет, прошу помощи разобраться в коде. Недавно начал изучать C++ по книге Лафоре. В главе с указателями есть пример со связными списками. Вот его структура: struct node { int data; node* next; }; class linklist{ private: node* first; public: http://www.cyberforum.ru/cpp-beginners/thread1801791.html
C++ Прервать цикл из цикла, вложенного в него
Приветствуют. Собственно, вопрос в названии темы. for(int i = 1; i <= 10; i++) for(int j = 1; j <= 5; j++) { if(/* здесь условие выхода из обоих циклов */) { /* как выйти сразу из 2-х циклов? */ /* break даст выход только из цикла j */ } }
C++ Тест. Подскажите где ошибка
1 ответ не правильный. Подскажите где ошибка.
C++ Typedef thiscall метода с переменным числом аргументов http://www.cyberforum.ru/cpp-beginners/thread1801756.html
Добрый день. Хочу что то типа такого typedef void *(__thiscall *tThisCall)(void *, ...); tThisCall method; //... method(object, arg1, arg2);
C++ Создание просто словаря, не выполняется поиск Пример взят из книги, но работать он не хочет. Проверял цикл for, выдает значение 012.(Не совсем понятно от куда что, ладно 2 цифры но их 3) Думаю что что то не так с if (!strcmp(a, word)), раньше не использовал strcmp с массивом. #include <iostream> #include <cstring> using namespace std; int main() подробнее

Показать сообщение отдельно
hoggy
6369 / 2587 / 452
Регистрация: 15.11.2014
Сообщений: 5,723
Завершенные тесты: 1
02.09.2016, 19:10     Реализовать подстановку кода с помощью препроцессора
Цитата Сообщение от Cend Посмотреть сообщение
где ошибка?
ошибок две:

1.
Цитата Сообщение от Cend Посмотреть сообщение
CLASSNAME_FUNC
должно быть так:
C++
1
CLASSNAME##_FUNC
2.
фатальная ошибка:
вы в одном макросе объединили определение функций,
и исполняемый код запуска другой функции.

так делать нельзя.
возможно вы хотите что-то вроде этого:

http://rextester.com/ECBOZ94050
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
// =======================================
 
#define DECL(CLASSNAME)         \
    void* CLASSNAME##_FUNC() {  \
        return new CLASSNAME;   \
    }                           
 
 
#define RUN(CLASSNAME)          \
    RunFunc(CLASSNAME##_FUNC, #CLASSNAME)
 
// =======================================
 
#include <iostream>
 
template<class T> void RunFunc(T*, const char* msg)
{
    std::cout<<"execute RunFunc for " << msg << std::endl;
}
 
 
struct some1{};
struct some2{};
 
DECL(some1)
DECL(some2)
 
 
int main()
{
    std::cout << "Hello, world!\n";
    RUN(some1);
    RUN(some2);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru