首页 > 其他分享 >函数名冲突导致的C语言“conflicting types”编译错误

函数名冲突导致的C语言“conflicting types”编译错误

时间:2024-08-03 16:18:26浏览次数:18  
标签:conflicting const 函数 C语言 冲突 test main types

快速解答:

啊,看来你也遇到了“conflicting types”——类型冲突编译错误。

如果你不是遇到:

  • 循环引用而没有用宏定义来解决。

  • 声明或定义在调用后面。

  • 声明和定义冲突。

  • .h.gch未更新。

那么我想告诉你,你可跟我一样忘了C语言不支持“函数重载”,即你的函数名不能重复。

所以不是你的类型声明(typedef)冲突了,而是函数名冲突了。

上下文

$ mingw32-make.exe test-program
gcc -finput-charset=UTF-8 -std=c99  -c test_main.c -o test_main.o
In file included from test_main.c:3:
ctzidn.h:98:6: error: conflicting types for 'IsNullCId'; have '_Bool(const Citiz
   98 | bool IsNullCId(const CitizenIdZip1 cid);
      |      ^~~~~~~~~
ctzidn.h:97:6: note: previous declaration of 'IsNullCId' with type '_Bool(const
   97 | bool IsNullCId(const CitizenId* const cid);
      |      ^~~~~~~~~
mingw32-make: *** [makefile:62: test_main.o] Error 1

-std=c99这个参数是我后加上去。我注意到stdbool.hbool最终指向_Bool,一想C语言之前好像没这个东西,就查了一下,是C99标准中才支持的,所以就加上了,但是错误并不是在这里。

我甚至多次注意到他说的类型冲突所指向的是函数名,甚至有一次开始想“好像C语言是不是不支持函数重名的?”,但是直接否定了,然后兜了一圈回来,才查了一下。这才确定了我C语言白学了啊。

最近好几个C语言项目编译不通过大概就是因为这个。(手动笑哭)


原文 2022年10月30日

标签:conflicting,const,函数,C语言,冲突,test,main,types
From: https://www.cnblogs.com/orange233/p/18340643/c-compiler-error-conflicting-types

相关文章

  • C语言运算符优先级口诀
    口诀内容(优先级自上而下递减;由逗号分隔的,优先级自左到右递减。)圆方括号,箭头句号。单目增减非反负,针强址长,从右。乘除求模,加减,位移,大小,等不等。位与异或,逻辑与或。条件赋值均右。真逗。解释(斜体字是补全;加粗字是对整行的说明;代码块即是所对应操作符。)圆括号()方括号[]......
  • 1-1 初识C语言
    初识C语言:C语言主要特点:有32个关键字,9种控制语句,34种运算符;数据类型有:整形,浮点型,字符型,数组类型,指针类型,结构体类型,共用体类型等,能实现各种复杂的数据结构(如链表,树,栈等)的运算,尤其是指针类型数据,使用十分灵活;具有结构化的控制语句(如if•••else语句.whil......
  • 【C语言】详解feof函数和ferror函数
    文章目录前言1.feof1.1feof函数原型1.2正确利用函数特性读写文件1.2.1针对文本文件1.2.2针对二进制文件1.3feof函数实例演示2.ferror2.1ferror函数原型前言或许我们曾在网络上看过有关于feof函数,都说这个函数是检查文件是否已经读取结束了。但事实却并非......
  • 【C语言】文件操作(下)
    文章目录前言1.文件的读和写2.文件的顺序读写2.1顺序读写函数的介绍2.1.1fgetc和fputc2.1.2fgets和fputs3.文件缓冲区4.总结前言在之前文件操作(上)和文件操作(中)的文章中,我从为什么要使用文件再到文件的打开和关闭操作给大家解读了文件在内存中运行的底层......
  • E25.【C语言】练习:修改二进制序列的指定位
    十进制13-->二进制01101现要求二进制序列的第5位修改为1,再改成0复习:逻辑运算非(NOT)(C语言:~)x==0,NOTx-->1;x==1,NOTx-->0与(AND)(C语言:&)x=0或1,xAND0-->0,0ANDx-->0或(OR)(C语言:|)x=0或1,xOR1-->1,1ORx-->1异或(XOR)(C语言:^)x==0或1,xXOR1-->NOTx和1XORx-->......
  • 衡庐浅析·C语言程序设计·第四章·数组
        本文适用于大学的期中期末考试、专升本(专接本、专插本)考试、408等考研预科。如有相关题目疑问或建议欢迎在评论区进行互动。    转载请标明出处。在深入学习C语言的数组之前,我们先回顾一下C语言的三大基本结构:顺序结构、选择结构和循环结构。这些结构构成......
  • c语言位运算符和位运算,位运算举例,位段
    位运算符1.按位与运算符(&)按位与运算符对两个整数的每一位进行“与”操作,只有当两个位都是1时,结果才为1,否则为0。inta=5; //二进制:00000101intb=3; //二进制:00000011intresult=a&b; //结果:00000001(1)2.按位或运算符(|)按位或运算符对......
  • 【C语言】操作符详解
    目录一、操作符分类二、移位操作符(1)左移位操作符(2)右移位操作符三、位操作符四、移位、位操作符的综合练习(1)不用临时变量,交换两个整数(2)求内存中整数的二进制中1的个数(3)二进制位置0或置1五、单目操作符六、逗号表达式七、结构体成员访问操作符(1)结构体(2)结构体的声明......
  • C语言——函数
    C语言——函数函数的语法函数的调用关系递归函数的主要思想是:函数其实是从上到下逐步求解的过程,把一个大的问题拆成多个小的子问题或者说把一个大的功能拆成小的功能模块,通过实现小的功能最终实现大的功能的过程。函数的语法类型标识符函数名(形式参数){函数体......
  • 【C语言】程序环境,预处理,编译,汇编,链接详细介绍,其中预处理阶段重点讲解
    目录程序环境翻译环境1.翻译环境的两个过程2.编译过程的三个阶段 执行环境 预处理(预编译) 1.预定义符号2.#define 2.1用#define定义标识符(符号)2.2用#define定义宏 2.3#define的替换规则 2.4#和##的用法2.5宏和函数2.6#undef3.命令......