冲突类型的功能错误

时间:2015-03-14 20:03:17

标签: c pointers struct

这是我第一次使用结构,我不确定我缺少什么。下面的代码在第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 *'请帮我解决此问题。

如果需要,我可以提供更多信息。

1 个答案:

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

在此之后,您的代码编译得很好。