我正在编写一个C程序,其中我实现了一个函数来生成用于打印彩色文本的ANSI colored颜色 代码.
const char* getAnsiColorCode(int colorId) {
static char colorCode[15];
snprintf(colorCode, sizeof(colorCode), "\e[38;5;%dm", colorId);
return colorCode;
}
我所需要做的就是打印一些彩色的问候世界:
int main(int argc, char *argv[]) {
for (int i = 0; i < 256; i++) {
printf("%sHello, World!\n", getAnsiColorCode(i));
}
}
这是我能找到的最干净的解决方案,但我想知道,宣布colorCode
为static
是不是一种糟糕的做法.
是否每次初始化colorCode
都会覆盖相同的变量,或者前colorCode
会留在内存中?我真的不喜欢他们都留在那里的 idea .但如果colorCode
被覆盖,似乎也不是坏事.
我也try 了一些其他的解决方案,但我不太喜欢.
我不想在堆上分配colorCode
,然后释放它.
我也不想把它作为一个论点来传递,因为这样看起来就不那么干净了.
还有比static
更好的方法吗?static
是不是一种糟糕的做法?