use*_*723 1 c string constants
我正在创建一个带有一些硬编码参数的 C 程序。(这是设计使然,不用担心。)
//global constants
const char * const USERNAME = "username";
const int USERNAME_LEN = strlen(USERNAME);
Run Code Online (Sandbox Code Playgroud)
当然,这是错误的,因为 strlen 显然不是一个常量。有没有办法做到这一点?或者我应该不关心并直接从 strlen 传递 strncmp 结果?
如果你真的需要你USERNAME作为一个const char * const对象(你吗?),那么一种方法是
#define USERNAME_LITERAL "username"
const char * const USERNAME = USERNAME_LITERAL;
const int USERNAME_LEN = sizeof USERNAME_LITERAL - 1;
Run Code Online (Sandbox Code Playgroud)
它如人们所希望的那样优雅,但确实使代码保持“自我维护”的状态。也就是说,您只需编辑文字,其余部分将自动更新。
你也可以做
const char USERNAME[] = "username";
const int USERNAME_LEN = sizeof USERNAME - 1;
Run Code Online (Sandbox Code Playgroud)
甚至
#define USERNAME "username"
const int USERNAME_LEN = sizeof USERNAME - 1;
Run Code Online (Sandbox Code Playgroud)
但在这种情况下USERNAME不再是const char * const这样,这就是为什么我问你是否真的需要它。