小编Vel*_*ven的帖子

使用指定的初始值设定项初始化结构中的2D字符串数组初始值设定项会在VS2013中发出错误C2078

我正在使用VS2013.整个程序是C,而不是C++.

我可以毫无问题地初始化这样的"字符串数组":

char titles[4][80] = { "Dad", "Idiot", "Donut Lover", "Fewl" }; // OK!
Run Code Online (Sandbox Code Playgroud)

我有一个像这样声明的结构:

typedef struct
{
    char name[80];
    char titles[4][80];
} Dude;
Run Code Online (Sandbox Code Playgroud)

当我尝试像这样初始化结构时:

Dude homer =
{
    .name = "Homer",
    .titles = { "Dad", "Idiot", "Donut Lover", "Fewl" } // error?
};
Run Code Online (Sandbox Code Playgroud)

我收到"错误C2078:初始化程序太多".这是因为数组初始化 - 如果我删除该.titles = { ...行,则错误消失.为什么我收到此错误?在struct初始化程序中是否有不同的方法来完成这种类型的字符串初始化?

如果我将结构的声明更改为这样

typedef struct
{
    char name[80];
    char *titles[4];
} Dude;
Run Code Online (Sandbox Code Playgroud)

错误消失了.然而,这不是我能做出的改变.代码库的其他部分要求此结构的大小正好是400字节.

此外,我很清楚我可以strcpy用来填写每个字段,但这不能回答我的问题.

c struct designated-initializer visual-studio visual-studio-2013

5
推荐指数
1
解决办法
317
查看次数

XMM/YMM/ZMM 中最小或最大元素索引的位旋转魔法

是否有指令或有效的无分支指令序列来计算无序(未排序)ZMM 的最大(或最小)元素的索引(而不是其值)?

数据类型并不重要 - 我更感兴趣的是知道是否有已建立的使用模式。


与已知解决方案相关的问题是,对于严格排序的 ZMM,可以使用 CMPPS、MOVMSKPS 和 TZCNT 来获取外部元素适合此列表的位置的索引(即 BSEARCH)

x86 assembly simd avx

5
推荐指数
1
解决办法
192
查看次数