본문 바로가기
C, C++

[c] function() function(void) 차이

by hong0 2022. 8. 31.
반응형

function() vs function(void) 

함수 파라미터로 아무것도 없는 경우와 void를 명시한 경우의 차이를 정리한다.

function()과 같이 선언된 경우의 함수는 파라미터를 명시적으로 선언하지 않았기 때문에 가변인자(variable parameter) 처럼 호출이 가능하다.

아래와 같이 함수 인자로 a와 b 두개를 전달하여도 error 없이 함수가 수행된다.

#include <stdio.h>

void function()
{
	printf("function()\n");
}

int main(void)
{
	int a = 1, b = 2;
	
	function(a, b);
	
	return 0;
}
function()

 

반면 function(void)와 같이 선언된 경우의 함수는 함수 파라미터로 값을 넣은 경우 error가 발생한다.

#include <stdio.h>

void function(void)
{
	printf("function()\n");
}

int main(void)
{
	int a = 1, b = 2;
	
	function(a, b);
	
	return 0;
}
prog.c: In function ‘main’:
prog.c:12:2: error: too many arguments to function ‘function’
  function(a, b);
  ^~~~~~~~

 

그러므로 파라미터가 없는 함수를 구현하고자 하는 경우에는 void를 명시하여 선언하는 습관이 좋을것으로 생각된다.

반응형

댓글