我在C中遇到#define问题 我使用的是MSP430F5418和IAR EW 5.10 我有一个名为location的pragma,它将下一个声明变量放到指定的段中。 在下面的示例中,a将放入名为myseg的段中,而b则不放入。
#pragma location="myseg" static const char a[] = "amma"; static const char b[] = "amrita";
我有很多像这样的常量。 我想知道我是否可以做这样的事情......
#define TYPE location="myseg" \ static const char #pragma TYPE a = "amma"; #pragma TYPE b = "amrita"; .....
这样我就可以在每个变量声明之前避免#pragma location="myseg"
。
答案 0 :(得分:2)
您不能在#pragma
内使用#define
,也不能使用其他方式。
为了避免这种限制,一些编译器提供_Pragma
operator(GCC,LLVM)(Visual C ++中的__pragma
),它提供与#pragma
指令相同的功能。此运算符可以在另一个宏中使用。找出您的编译器是否支持这样的pragma运算符。
使用它,你可以写:
#define DECLARE_IN_SEG(decl) \
_Pragma(location="myseg") \
static const char decl;
DECLARE_IN_SEG(a = "amma");
DECLARE_IN_SEG(b = "amrita");