这是我第一次使用结构,我不确定我缺少什么。下面的代码在第38行给出以下错误: '加密'的冲突类型 这是代码:
#include<stdio.h>
#include<stdint.h>
void encrypt(struct bitfield24* , struct bitfield24*, struct bitfield24*);
struct bitfield24 {
uint32_t value : 24;
};
void main(){
struct bitfield24 key[4];
key[0].value = 0;
key[1].value = 1;
key[2].value = 2;
key[3].value = 3;
struct bitfield24 plain_text[2];
plain_text[0].value = 0;
plain_text[0].value = 1;
struct bitfield24 cipher_text[2];
cipher_text[0].value = 0;
cipher_text[1].value = 0;
struct bitfield24* pt = plain_text;
struct bitfield24* ct = cipher_text;
struct bitfield24* k = key;
encrypt(pt, ct, k); // line 30
printf("%x ,", ct[1].value);
printf("%x \n", ct[0].value);
}
/*
* Ecnryption Method
*/
void encrypt(struct bitfield24* pt, struct bitfield24* ct, struct bitfield24* k){ //line 38
// Encryption Algorithm
}
除此之外,这里还有与代码相关的警告。第30行的所有3个参数都会抛出相同的警告。
注意:预期'struct bitfield24 *'但参数类型为'struct bitfield24 *'请帮我解决此问题。
如果需要,我可以提供更多信息。
答案 0 :(得分:2)
您的代码存在两个主要问题。首先,在定义结构本身之前,不能使用结构声明方法原型。解决方案是首先定义结构:
#include<stdio.h>
#include<stdint.h>
struct bitfield24 {
uint32_t value : 24;
};
void encrypt(struct bitfield24* , struct bitfield24*, struct bitfield24*);
其次,您的代码将无法编译,因为main
未返回int
。它必须这样定义:
int main(){
在此之后,您的代码编译得很好。