Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 2 года назад.
Долгое время ищу информацию о создании модульного проекта на C++.
Т.е., чтобы реализовать следующее:
1) Создать ядро программы
2) Создать два модуля (например, nmHashCounter и xxHashCounter)
3) В зависимости от того, какой модуль заинклуден - выполнять действия в модуле, если заинклудены оба - вылетать в ошибку при компиляции.
4) Если же не один из модулей не заинклуден, то выполнять стандартные действия.
Например,
есть класс User с функцией DoSMTH, которая по умолчанию выдает надпись "You're Welcome!".
Мы инклудим DiabloModule, и теперь при вызове DoSMTH будет появляться "Welcome to HELL!".
Как это реализовать?
Есть ли идеи?
Спасибо, хорошего дня!
Вот вам простейший вариант. Есть масса более хитрых, но зачем сложно, если можно просто? :)
FIRST.HPP
#pragma once
#include <iostream>
inline void doIt(int)
{
std::cout << "Hello First\n";
}
SECOND.HPP
#pragma once
#include <iostream>
inline void doIt(int)
{
std::cout << "Hello Second\n";
}
MAIN.CPP
#include <iostream>
//#include "first.hpp"
//#include "second.hpp"
using namespace std;
template<typename T>
void doIt(T)
{
cout << "Hello, World\n";
};
int main(int argc, const char * argv[])
{
doIt(0);
}
Оставите как есть - выведет Hello, World
.
Уберете комментарий с #include "first.hpp"
- выведет Hello First
.
Уберете комментарий с #include "second.hpp"
- выведет Hello Second
.
Уберете оба комментария - не скомпилируется.
Примерно то же самое можно для классов, других функций и т.п.
Варианты посложнее - например, когда каждый модуль регистрируется в основной программе - правда, проверка при этом уже на уровне выполнения. Но вполне можно добавить вот такие же одинаковые функции именно для единственности модуля.
И C++17 тут совершенно ни к чему. Это и C++03 умел - ведь inline
я использовал, по сути, чтоб ограничиться .hpp-файлами :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я хочу отправить данные через USB на ArduinoСам микроконтроллер запрограммирован ждать сигнал с serial-порта
Есть ли сайт где указаны все расшифровки названий для C++ (например как расшифровывается cout = console output; endl = end line; iostream = input output stream и тд
Как сделать чтоб поток переставал выполняться когда ЛКМ перестает быть зажата? Есть такой код: