C에서 배열크기가 define값에 의존적일때 초기화도 이 값에 의존적으로 할 방법이 있을까요?
글쓴이: lvheart / 작성시간: 금, 2009/04/17 - 7:56오후
즉 아래와 같은 코드에서
#define MAX_NUM 2 #define INIT_VAL 1 void TEST(void) { static array[MAX_NUM] = {INIT_VAL, INIT_VAL}; ... }
MAX_NUM 이 변할 때 초기값도 자동으로 세팅되게 하고 싶은데
#define MAX_NUM 3 #define INIT_VAL 1 #define ARRAYINIT(x) ...//INIT_VAL, 를 x개수만큼 만드는 매크로 void TEST(void) { static array[MAX_NUM] = {ARRAYINIT(MAX_NUM)}; ... }
이렇게 할 수 있는 방법이 있을까요?
Forums:
for 문은 배제하신
for 문은 배제하신 거죠?
네. 이 함수는
네. 이 함수는 한번만 수행되는 함수가 아니라서 compile시에
초기화 되어야 합니다.
원하는 부분을
원하는 부분을 한번만 수행되도록 하는 방법은 많습니다.
OTL
굳이 매크로를 쓰지 않아도...
#define MAX_NUM 3
#define INIT_VAL 1
void TEST(void)
{
static int array[MAX_NUM] = {INIT_VAL,};
...
}
위와 같이 콤마를 찍어주면, 모두 INIT_VAL로 초기화되지 않나요?
--------------------------------------------------------------------------------------
조금씩이라도 전진한다.
뒤는 0이 됩니다.
냉무
덧붙이자면 ,가 있던
덧붙이자면 ,가 있던 없던 지정되지 않은 부분은 전부 0이 됩니다.
GCC 확장 기능으로,
GCC 확장 기능으로, 범위(range)를 지정해서 초기화하는 방법이 있습니다. 예를 들면:
따라서 질문의 답은:
다시 말하지만, GCC 확장 기능입니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기