Можно ли изменить процесс сборки и компоновки, чтобы заменить реализацию memcpy
и malloc
?Да.Это хорошая идея?Не совсем.
Было бы лучше просто использовать логику #define
, чтобы переименовать эти функции во что-то вроде memcpy_testing
и malloc_testing
, а затем иметь один #define
, который переключается между ними.Таким образом, ваше решение будет более переносимым на другие системы сборки, и другим программистам станет более понятно, что вы делаете на земле.
Редактировать: В соответствии с комментариями, вот пример того, что вы 'сделать в общем заголовочном файле:
#ifdef testing
# define my_malloc(n) testing_malloc(n)
#else
# define my_malloc(n) malloc(n)
#endif
Вы можете даже поддерживать переключение во время выполнения, если это необходимо, используя указатели функций:
void *(__cdecl *my_malloc)(size_t);
// ...
void SetToTest() { my_malloc = testing_malloc; }
void SetToStandard() { my_malloc = malloc; }