C언어 질문 드립니다.
글쓴이: hoya128 / 작성시간: 금, 2013/08/02 - 6:42오후
아무리 고심해도 답이 안보여서 질문 드립니다.
일단 코어 로직 부분에 다름과 같은 루프가 있다고 합시다.
for (loop = 0; loop < threshold; ++loop) {
array[loop] = DEFINE_"loop"
}
다음으로 사용자에게 옵션 형태로 입력을 받는 다음과 같은 부분이 있다고 합니다.
#define threshold 2 // 사용자가 결정.
#define DEFINE_0 0 // 사용자가 알아서 결정.
#define DEFINE_1 1 // 즉, 어떤 값이 올 지 모름.
이런 형식으로 설계를 했는데, 구현 부분에서 막혀버립니다. ㅠ_ ㅠ
위와 같이 사용자에 의존적인 부분과 코어부분을 분리하고, 사용자는 해당 정의만 신경쓰면 알아서 정의한 값이 들어가도록 하고 싶은 것이 목적인데...
방법이 없을까요?
Forums:
음 ..
별도로 lookup table 을 만드는게 나을 것 같네요.
macro 로는 자동으로 치환시킬 수 없을 겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다.
간단하게 해보려고 했는데 힘드네요.. ^^
loop를 돌린 이유가 define 값이 몇 개가 들어갈 지 몰라서 그렇게 한 거거든요 ㅎㅎ
몇 개를 하던 네이밍 규칙만 따르면 자동 초기화가 되도록 말이죠.
아무래도 말씀해주신 형태로 유저에게 상한치를 알려주고 이 이상은 쓸 수 없다는 방향으로 설계를 수정해야 하겠네요. ^^
도움 주셔서 감사드립니다.
#define은 컴파일 타임에 결정됩니다. 런타임에
#define은 컴파일 타임에 결정됩니다. 런타임에 결정되게 하고 싶고, 어떤 값이 어떤 이름으로 들어갈지도 모른다면 그냥 key-value 쌍의 자료구조(hash나 map(tree))를 이용하세요.
답변 갑사드려요.
개발 환경이 좀 괜찮으면 그렇게 하겠는데.. 현재 임베디드 플랫폼이거든요. ^^;;
지금은 STM32F1 시리즈로 개발을 하고 있지만, 최종단계는 80251이 될 것이고..
컴파일러 버그에도 시달린 경험이 있고, 그 때문에 컴파일러 회사들이랑도 일하고 했던 경험이 있어서인지 heap도 못쓰게 합니다. ㅎㅎ
검증을 안해봤는데 양산 단계에서 문제 생기면 난리난다는 이유로요. ^^
또, 임베디드 환경이다보니 코드 사이즈나 메모리 사이즈 제약도 엄청 심해서 뭔가를 쓰기가 참 애매하네요 ㅠ_ ㅠ;;
일단 threshold 제한을 두고 몇 개 이상은 지원할 수 없다라고 못 박은 후에,
loop대신 switch-case 등으로 해결을 봐야할 것 같습니다.
도움 감사드려요~^^
댓글 달기