인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

kynoh님의 프로필 이미지
kynoh

작성한 질문수

홍정모의 따라하며 배우는 C언어

16.11 inline 함수

[(16. 전처리기와 라이브러리) - 11. inline 함수] inline function의 assembly code질문 (강의 10분 18초)

해결된 질문

작성

·

436

0

안녕하세요. inline function의 assembly code에 call 이 나오는 문제 때문에 질문드립니다!

현재 visual studio 2022 community 최신 버전을 사용하고 잇습니다.

또한, 해당 강의대로 inline function expansion을 only _inline 으로 설정했습니다.

 

하지만 assembly code를 보면, inline function expansion을 disable 했을 때와 차이가 없습니다.

 

Visual Studio 2019 Community에서도 그러합니다.

 

작성한 code는 강의대로, 아래와 같습니다.

 

#include <stdio.h>

inline int foo()
{
	return 5;
}

// Driver Code
int main()
{
	int ret;

	// Inline Function Call
	ret = foo();				// Breakpoint

	printf("Output = %d\n", ret);

	return 0;
}

 

어떻게 해야 강의의 10:18 에서와 같이, assembly code로 봤을 때, foo()의 function call없이, mov dword ptr [ret],5만  확인할 수 있을까요?

답변 1

1

안녕하세요,

혹시 여러 번 반복적으로 시도해도 해당 문제가 발생하시나요?

방금 Visual Studio 2019, 2022를 설치해서 시도해보았는데

잘 적용되는 듯 보여서요.

그리고 설정이 제대로 들어갔다면 잘 적용 되어야만 하는 것이구요 :)

kynoh님의 프로필 이미지
kynoh
질문자

 

네, 열 댓번은 넘게 해봐도 강의와 다르게 call foo가 나옵니다.

일단 inline function에 대해 이해는 했으므로 넘어갔습니다!

kynoh님의 프로필 이미지
kynoh
질문자

일단 VS Code  gcc compiler로, inline function compile 명령어와 assmbly file을 output하는 명령어를 사용해 본 결과, 강의에서와 같이, foo()함수의 call이 없는 inline function의 assembly code를 확인했습니다.

다른 랩탑의 visual studio에서도 한 번 확인해봐야겠네요!

답변 감사드립니다 :)

kynoh님의 프로필 이미지
kynoh

작성한 질문수

질문하기