Я не уверен, но на простых примерах компилятор может вообще использовать результат функции.
#include <stdio.h>
int func(const int num){
int result = 0;
for (int i=0; i<num; ++i){
result += i;
}
return result;
}
int func2(int num){
int result = 0;
for (int i=0; i<num; ++i){
result += i;
}
return result;
}
int main()
{
printf("%d, %d\n", func(10), func2(10));
return 0;
}
Главный минус кодовых замков это элюзия безопасности. Большинство из них вскрываются за считанные секунды. Поэтому может проще купить тросик и пристегивать любой рюкзак с таким же успехом.
www.youtube.com/channel/UCLx053rWZxCiYWsBETgdKrQ — LGR старые игры и странные устройства из прошлого
www.youtube.com/user/Techmoan — Забытые аудиоформаты и не менее интересные железки
www.youtube.com/user/adric22 — 8 битный парень и ретрожелезки, ремонт и обзоры
www.youtube.com/user/XboxAhoy — Исторические обзоры на игры
выхлоп llvm
define i32 @main() local_unnamed_addr #1 {
%1 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i32 45, i32 45)
ret i32 0
}
Хотя сами функции одинаковы. Возможно в более сложных примерах const позволяет чуть лучше оптимизировать.
Протыкание молнии.
Скорее это самообман и лучше быть осторожнее.