const char * GetDevName() { #if (defined(BRAND_BV) && (CUSTOMER == 64)) static char temp[64] = "Ivideon"; strcat(temp, "-"); strcat(temp, g_SystemCfg.szDevName); return temp; #else return g_SystemCfg.szDevName; #endif }这样有什么报错
时间: 2024-04-18 08:26:52 浏览: 81
VC++ string_format(const char* format, ...)
5星 · 资源好评率100%
在上述修改后的代码中,不会出现编译错误。静态变量 `temp` 被定义为静态数组,并且作为函数的返回值。这样就避免了之前提到的指向局部变量的指针问题。
静态数组是在程序的数据段中分配内存,而不是在栈上分配。因此,即使函数执行完毕,数组 `temp` 仍然保持有效。请注意,静态变量的生命周期会延长到整个程序的执行期间。
因此,这段代码不会导致返回无效内存地址的问题。但是,需要注意的是静态变量 `temp` 的长度为 64,如果连接到 `temp` 的字符串超过了这个长度,可能会导致缓冲区溢出。确保 `g_SystemCfg.szDevName` 的长度不会超过 `temp` 的长度是很重要的。
阅读全文