我的 VS2012 Windows Phone 项目的一部分是用 C 语言编写的。我在一天中一直在努力尝试初始化一个数组以将内容放入其中。
每当我尝试将其初始化为全局(在任何函数之外)时,我都会收到一条消息,告诉我无法使用非 const 的值对其进行初始化。
const char* myArray = (const char*)malloc(256);
// Bad code: this isn't initialized with a const
如果我没有用值初始化它,那么我会收到一条消息告诉我给它一个值。所以我为数组分配了一个 NULL 值。
const char* myArray = NULL;
然后我需要在某处设置大小,所以我在我的主函数或第一个函数中设置大小:
int myFirstFunctionInTheCode()
{
myArray = (char*)malloc(256);
}
然后我得到类似的东西:';' 预计在类型之前
所以我在论坛上搜索并读到 Visual Studio 中的 C 是 C89,因此,我需要声明然后在两个单独的行上分配,这在我的代码的其他地方不是真的,所以我完全混淆了-真实的标准。但是在两行上执行此操作时我仍然会遇到相同的错误。
然后我决定使用可用的 VS 库中的一些其他工具来找出在 C 中我不能包含 sstream、streambuf 等,否则我的整个项目会因数以千计的错误而失败。所以我可以使用 boost 来获得一个真正的流库,但由于一些线程的使用,它与 Windows Phone 不兼容。
如何在 C 中(在 Visual Studio 中)在全局、固定大小的数组中设置值?
我想要实现的类似于 C# 中的一些东西:
static byte[] gentleCSharpArray = new byte[256];
private void easyShotCSharpFunction()
{
gentleCSharpArray[0] = 0x57;
gentleCSharpArray[1] = 0x54;
gentleCSharpArray[2] = 0x46;
}
我从来没有花太多时间尝试为数组赋值,所以我想我的全局 char* 数组完全错了?