【发布时间】:2016-07-08 11:48:05
【问题描述】:
我正在尝试创建一个数组,该数组在每个索引处都有一个位字段 我试过这段代码:
struct bitF {
unsigned int x1:1;
...
unsigned int xn:1;
}intBF;
typedef struct intBF *arr[];
int main(){
int i;
unsigned int *arr2[10]
for(i=0;i<sizeof(arr2)/sizeof(unsigned int);i++)
{ arr2[i] = malloc(sizeof(intBF));
arr2[i] = (unsigned int *)(&intBF);
arr[i].x5 = 3;}
return 0;}
但我从编译器中得到最后一行代码的错误。 我希望能够转到索引“n”处的数组并更改位值(不使用掩码)。编译器错误(虽然我认为它不相关)是:
错误:预期标识符或 '(' 在 '[' 标记之前
【问题讨论】:
-
如果您的编译器出现错误,您应该将该错误复制/粘贴到您的问题中,以便其他人可以帮助您。您的倒数第二行还有一个
_,这是不正确的语法。 -
好吧,您的代码确实没有多大意义,而且格式错误。如果您想处理单个位,那么位域-
struct肯定不是一个好主意。作为一般规则,如果你真的不知道它的所有含义,就不要施放,接受它们并且(最重要的)真的必须这样做。另见How to Ask。重新编译器错误:我假设编译器在这里更好地知道什么是相关的,什么不是。它应该告诉你编译器确定你的代码是错误的。 -
编译器错误(虽然我认为它不相关)编译器错误总是相关。全部。
-
说真的......我知道我的代码非常错误......否则我不会问!!......我有一个任务,我需要创建类似汇编器的东西按位存储输入数据...我的大多数程序都可以正常工作,但是要将数据转换为位(将输入文件中的每一行编码为位):S:S 不适合我,我需要帮助,批评没有帮助我,所以我需要替代代码。
-
主要问题是我需要做什么才能写出这样的行:arr[i].x=3; which x is a bit fields
标签: c arrays ansi bit-fields