Я пишу программу на C, которая использует собственную функцию ведения журнала для отладки моей программы. Всякий раз, когда я компилирую свою программу в качестве выпуска, я хочу, чтобы все мои функции ведения журнала были удалены из кода, чтобы он не отображался, если кто-то пытается его разобрать.Зачистка определенных функций во время компиляции
Рассмотрим следующий пример:
#include <stdio.h>
void custom_logging_function(char* message)
{
// Do something here
}
int main()
{
custom_logging_function("Hello world"); // This call should be removed.
return 0;
}
Как я мог сделать это так, чтобы custom_logging_function
и это аргументы не скомпилированы в моей программе, без необходимости писать включать охранников везде на протяжении всего моего кода? Спасибо
Почему вас волнует, если они лишены компилятором или компоновщиком? – Olaf
@ Олаф - это комбинация вещей, во-первых, производительность и двоичный размер, а второй - это то, что люди не смогут декомпилировать мою программу и видеть бесплатные внутренние заметки о программе, если они хотят разорвать ее на части. – Paradoxis
Не делайте преждевременных оптимизаций! Если у вас возникла проблема с синхронизацией, профайл вашего кода. Вы, кажется, не поняли моего комментария. Конечно, вы можете заменить функцию манекеном. Просто оставьте остальную часть инструментальной цепочки. Не знаю, как это будет препятствовать декомпиляции. Это всего лишь функция меньше. (действительно интересно, как программисты заботятся о таких вещах, но игнорируют гораздо более важные проблемы). – Olaf