다음과 같은 매크로가 있습니다.전 처리기 지시문을 malloc하는 방법
#define WR_BLK_SIZE_REGINFO 123
도서관 프로젝트 (.a)에서이 매크로를 사용하고 있습니까? 라이브러리 프로젝트는 "WR_BLK_SIZE_REGINFO"의 크기가 라이브러리 프로젝트에 정적으로 할당되어 변경 될 수없는 사전 컴파일됩니다.
어떻게 전 처리기 지시문 코드를 동적으로 할당 할 수 있습니까?
다음과 같이 지정합니다. 그게 가능하니?
#define WR_BLK_SIZE_REGINFO malloc
혼란스러운 경우 더 자세히 설명 드리겠습니다.
-이 매크로는 무엇을 사용합니까?
Ans :이 매크로는 내 라이브러리 프로젝트의 다양한 파일에 사용됩니다. 코드의 복잡성을 줄이기 위해 나는
- 왜 매크로를 malloc을 하시겠습니까 크기를 해결하기 위해 매크로를 사용하고?
Ans :이 라이브러리 프로젝트는 많은 컨트롤러에서 사용되는 라이브러리 프로젝트를 수행하고 있습니다. 각 컨트롤러에는 자체 메모리 세트가 있습니다. 그래서 나는 그 매크로의 크기를 정적으로 고정시킬 수 없다. 컨트롤러 메모리에 따라 달라질 필요가 있기 때문입니다.
몇 가지 코드를 보여 주시겠습니까?
는 sample.h
#define WR_BLK_SIZE_REGINFO 123
하여 Sample.c
if(!((numItems >= 1) && (numItems <= WR_BLK_SIZE_REGINFO)))
{
// logic
}
sample1.c
if(!((numItemsWrite >= 1) && (numItemsWrite <= WR_BLK_SIZE_REGINFO)))
{
// logic
}
주 1 : 위의 모든 파일은 미리 컴파일 된 라이브러리 파일이며 여기에서 "123"이 수정되었습니다. 수정하지 않으려합니다. 나는 동적으로 할당하고 싶다.
주 2 : malloc이 올바른 선택인지 확실하지 않습니다. 라이브러리 프로젝트에서 또는 런타임에 응용 프로그램 프로젝트 (라이브러리 프로젝트에서 응용 프로그램 프로젝트로 입력 123)
을 입력하는 동안 런타임에 "123"을 입력해야합니다. 참고 : 3 : 라이브러리 프로젝트는 MPLAB X IDE, 기본적으로 마이크로 칩 프로젝트입니다.
왜'int WR_BLK_SIZE_REGINFO = 123;'가 아닌가? –
WR_BLK_SIZE_REGINFO가 1000의 장소에서 사용되고 다른 파일에 적어도 약 10-15 개의 파일이 사용 되었기 때문에 매크로가 필요합니다 – kaviarasan
매크로와 동일하게 작동합니까? 그렇습니다. 표시 한 샘플 코드는 여전히 작동해야합니다. 물론 WR_BLK_SIZE_REGINFO를 가정하는 코드는 컴파일 시간 상수를 다시 작성해야하지만 불가피합니다. –