Max*_*Max 1 c syntax coding-style
我经常想做这样的事情:
unsigned char urlValid[66] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
Run Code Online (Sandbox Code Playgroud)
...要么:
unsigned char listOfChar[4] = "abcd";
Run Code Online (Sandbox Code Playgroud)
...也就是说,从字符串文字中初始化一个字符数组,并忽略该字面值中的空终止符.它非常方便,而且我可以做类似的事情sizeof urlValid并得到正确的答案.
但不幸的是它给出了错误initializer-string for array of chars is too long.
有没有办法:
您将问题标记为C和C++.实际上在C语言中,您不会收到此错误.相反,终止零根本不会包含在数组中.即在C中,它的工作方式与您希望它的工作方式完全相同.
在C++中,您确实会收到错误.在C++中,您可能必须容纳终止零并记得从结果中减去1 sizeof.
另请注意,正如@Daniel Fischer在评论中建议的那样,您可以将定义与初始化"解耦"
char urlValid[66];
memcpy(urlValid, "ab...", sizeof urlValid);
Run Code Online (Sandbox Code Playgroud)
从而有效地模拟了C++中C语言的行为.