Вставить дополнительный код в файл
Есть файл tree.cpp. Как сделать так, чтобы другой файл modified_tree.cpp состоял из содержимого этого файла, но с добавленным return выражением в конце функции int* create_tree()?
Скорее всего, нужен какой-то макрос для добавления строки, но не знаю какой. Необязательно по названию функции, можно хотя бы по номеру строки.
// file modified_tree.cpp
#include "tree.cpp"
INSERT_STRING(create_tree, "return 42")
// file tree.cpp
// code ...
int* create_tree() {
// code ...
// -> insert return here <-
}
// code ...
Ответы (1 шт):
Если, как вы сказали, файл tree.cpp никак изменять нельзя, то остается только сделать его полный клон за исключением функции которую вам нужно модифицировать. Потом исключить из сборки оригинальный tree.cpp и подменить его своим вариантом. Можно подменить объектный файл на этапе линковки.
Ну а в своей версии можно действовать как вам удобно. Например макросом, если вам нужно несколько вариантов:
// tree_template.cpp
int * create_tree(){
return SUPER_PUPER_RETURN;
}
// tree_42.cpp
#define SUPER_PUPER_RETURN (42)
#include "tree_template.cpp"
// tree_null.cpp
#define SUPER_PUPER_RETURN (nullptr)
#include "tree_template.cpp"