static const char * a = "0,0,0,%d,0,0,0,0,0,0,0,0,0,0";
static const char * b = "0,%d,0,0,0,0,0,0,%d,0,0,0";
void function(void)
{
const uint16_t bufferSize = MAX(sizeof(a),sizeof(b));
char bufferData[bufferSize+1];
}
我现在这段代码无效,但这是为了这个想法。
目标是定义一个足够大的数组,以保存a和b之间最大的常量字符串。
答案 0 :(得分:0)
如果你没有锁定字符串的类型,只是它们是一个常量字符串,你可以将它们作为char[]
类型来使它工作:
#define SIZE(Z) (sizeof(Z)/sizeof(char))
#define MAX(X,Y) SIZE(X) > SIZE(Y) ? SIZE(X) : SIZE(Y)
int main()
{
char a[] = "asdfasdfasdfasdfasdfasdf"; // length: 24
char b[] = "adsfasdfasdfasdfasdfa"; // length: 21
char buffer[MAX(a, b) + 1];
printf("buffer size: %d\n", MAX(a, b) + 1); // returns 25
return 0;
}