函数错误类型冲突

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(){

在此之后,您的代码编译正常。