【问题标题】:Why data types are conflicting?为什么数据类型会发生冲突?
【发布时间】:2021-08-28 19:38:57
【问题描述】:

当我遇到这个问题时,我正在使用带有 gcc 编译器的代码块...... 错误:func32() 的类型冲突; 我尝试更改函数的名称。但还是不行

static void func32(int, int);

void main()
{
    int a = 4, b = 5, c = 6;
    func31(a, b);
    func32(&b, &c);
    printf("The Result Will Be: %d\n", c - a - b);
}

static void func32(int *a, int *b)
{
    int c;
    c = *a;
    *a = *b;
    *b = c;
}

【问题讨论】:

  • 只需简单地找出差异:static void func32(int, int); vs static void func32(int *a, int *b)
  • “我尝试更改函数的名称。但仍然不起作用”我不明白您为什么希望这会有所帮助。错误消息是否说“功能名称冲突”?不;它说“功能冲突的类型”。因此....

标签: c function types


【解决方案1】:

您对func32 的声明说它需要两个整数(int)。

static void func32(int, int);

另一方面,func32 的定义表明它需要两个指针 (int*)。

static void func32(int *a, int *b)

这里是冲突。声明和定义应该使用相同的签名。在这种情况下,参数应该是指针。

【讨论】:

  • 像 OP 这样的问题不应该得到回答,因为它们归结为印刷错误或对语言基础的误解,这两者都不合适。
  • 新的声明语句:static void func32(int *a, int *b);
【解决方案2】:
static void func32(int, int);

内存位置并不总是整数类型。定义中的签名和传递给它的值的数据类型非常不同。因此发生冲突。

static void func32(int *a, int *b)

解释

int a = 1:
int *p = &a; /* stores some number or sometimes alphanumeric address. you will come to notice when you simply print p
dereference it and you get a. printf("%d",*p);   */

【讨论】:

    猜你喜欢
    • 2016-04-07
    • 1970-01-01
    • 2021-01-09
    • 2016-04-21
    • 1970-01-01
    • 2014-12-16
    • 2019-09-20
    • 1970-01-01
    • 2015-06-14
    相关资源
    最近更新 更多