函数错误类型冲突
Conflicting types of function error
这是我第一次使用结构体,我不确定我遗漏了什么。下面的代码在第 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 *”请帮我解决这个问题。
如果需要,我可以提供更多信息。
您的代码存在两个主要问题。首先,您不能在定义结构本身之前使用结构声明方法原型。解决方法是先定义struct:
#include<stdio.h>
#include<stdint.h>
struct bitfield24 {
uint32_t value : 24;
};
void encrypt(struct bitfield24* , struct bitfield24*, struct bitfield24*);
其次,您的代码将无法编译,因为 main
不会 return int
。必须这样定义:
int main(){
在此之后,您的代码编译正常。
这是我第一次使用结构体,我不确定我遗漏了什么。下面的代码在第 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 *”请帮我解决这个问题。
如果需要,我可以提供更多信息。
您的代码存在两个主要问题。首先,您不能在定义结构本身之前使用结构声明方法原型。解决方法是先定义struct:
#include<stdio.h>
#include<stdint.h>
struct bitfield24 {
uint32_t value : 24;
};
void encrypt(struct bitfield24* , struct bitfield24*, struct bitfield24*);
其次,您的代码将无法编译,因为 main
不会 return int
。必须这样定义:
int main(){
在此之后,您的代码编译正常。