inline bool buf_is_readable(struct byte_buffer_reader *reader, size_t len) { bool is_valid = reader->buf.buffer != NULL; bool pos_not_ended = reader->pos + len > reader->buf.len; return is_valid && pos_not_ended; } // ... if (!buf_is_readable(reader, 16)) { panic("panic!"); }이렇게 하면if (!(reader->buf.buffer != NULL && reader->pos + len > reader->buf.len)) { panic("panic!"); }이렇게 될 거라고 기대해도 될까여?
컴파일러 종류 버전마다 다름. 나는 forceinline까지 줬는데도 인라인 안 시켜주는 경우도 봤음. 2줄까지 함수였는데
디스어셈블리 해봐
우리가 컴파일러냐 어케 알아
종류마다 버전마다 옵션마다 다름
인라이닝은 제일 예측하기 힘든 부분이라