Взял следующий код
int main() {
int* a = (int*) malloc(sizeof(int) * 10);
free(a);
return 0;
}
Если скомпилировать его в llvm IR clang -S -emit-llvm -O0 -g
, объявление free будет:
declare i32 @free(...) #2
Однако, если я добавлю #include <stdlib.h>
, объявление free будет:
declare void @free(i8*) #2
При добавлении include объявление явно берется из заголовочного файла, но почему неявное объявление free отличается?