Table of contents

    요약

    C언어에서 가변길이의 배열을 파라미터로 입력받을 수 있다.

    일반적인 형태는 아니지만, C언어에서 자유도를 좀 더 높여주는 역할을 한다.

     

    일반적인 코드와 가장 큰 첫 번째 차이는 파라미터에

    , ...

    처럼 새로운 형태의 파라미터를 추가흐는 것이다.

     

     

    두 번째는 아래 함수들을 활용하는 것이다.

    va_list()
    va_start()
    va_arg()

     

    아래 예시 코드를 보면 좀 더 이해를 통해 상세히 이해해보도록 하자.

     

     

    예시 코드

    void copyArr(uint8_t * data, uint8_t num, ...)
    {
    	uint8_t *p;
    	p = data;
    
    	va_list ap;
    	va_start(ap, num);
    
    	for (int i = 0; i < num; i++)
    	{
    		*p = va_arg(ap, uint8_t);
    		p++;
    	}
    	va_end(ap);
    }
    
    void main()
    {
    	
    	uint8_t response[8];
    	uint8_t response_len;
    
    	copyArr(&response, 8, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
    }