[英]How to malloc a preprocessor directives
我有一個宏如下。
#define WR_BLK_SIZE_REGINFO 123
我在庫項目(.a)中使用這個宏。 庫項目是預編譯的,其中“WR_BLK_SIZE_REGINFO”的大小不能更改,因為它是在庫項目中靜態分配的。
現在如何動態分配預處理器指令代碼?
我想要像下面這樣的東西。 那可能嗎?
#define WR_BLK_SIZE_REGINFO malloc
如果感到困惑,讓我再簡要說明一下。
- 這個宏有什么用?
Ans:這個宏用於我的庫項目的各種文件中。 為了降低代碼復雜性,我使用宏來固定大小
Ans:我在做一個庫項目,這個庫項目會用到很多控制器中。 每個控制器都有自己的內存集。 所以我無法靜態修復該宏的大小。 因為它需要根據控制器內存而變化。
演示一些代碼?
樣本.h
#define WR_BLK_SIZE_REGINFO 123
樣本.c
if( !((numItems >= 1) && (numItems <= WR_BLK_SIZE_REGINFO)) )
{
// logic
}
樣本1.c
if( !((numItemsWrite >= 1) && (numItemsWrite <= WR_BLK_SIZE_REGINFO)) )
{
// logic
}
注1:以上所有文件都是預編譯的庫文件,這里修復了“123”,我不希望它被修復。 我想動態分配。
注2:我不確定 malloc 是否是正確的選擇。 我所需要的只是我想在庫項目的運行時或應用程序項目的編譯時輸入“123”(從應用程序項目到庫項目輸入 123)
注 3:庫項目是使用 MPLAB X IDE 構建的,基本上是一個微芯片項目。
在 sample.h 中:
int get_wr_blk_size(void);
#define WR_BLK_SIZE_REGINFO get_wr_blk_size()
在某個 C 文件中
static int wr_blk_size = 123;
static int set_wr_blk_size(int j) { wr_blk_size = j; }
int get_wr_blk_size(void) { return wr_blk_size; }
請注意,任何假定 WR_BLK_SIZE_REGINFO 是編譯時常量的代碼都必須重寫,因為它不再是了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.