中易网

这是什么错误啊 error: redefinition of ‘Count’ note: previous definition of ‘Count’ was here

答案:2  悬赏:80  
解决时间 2021-01-17 07:44
  • 提问者网友:火车头
  • 2021-01-17 01:12
这是什么错误啊 error: redefinition of ‘Count’ note: previous definition of ‘Count’ was here
最佳答案
  • 二级知识专家网友:逐風
  • 2021-01-17 02:30
什么语言? 什么编译环境? 完整的错误信息是什么?

这个就是告知你变量Count被重复定义了, 而重复定义的地方就是here后面的内容。

如果你是写C程序,而用的集成环境有恰好是Code::Block,那么看看是否某个系统的头文件出错? 如果是, 除了检查重复定义之外, 还有一个可能, 就是你的源码文件是.C, 而系统的头文件或其它include的文件是cpp的, 这样你只需要把你的.c---> .cpp即可。 试试看。

具体错误分析, 还是需要完整的信息。 按上面的错误来看,就是变量'Count'重复定义了。追问自己写了两个头文件,其中一个头文件引用了另一个头文件中的函数,然后就报错
不过我现在吧两个头文件合并了,就没有问题了,那是什么问题呢
还有一个问题是:用scanf输入字符为何无法接受到.
c 语言有没有向文件中某一行写入内容的函数
先谢谢了
linux c 环境追答① 合并后, count变量就被认为是同一文件中的定义, 因此重复定义问题, 就不存在了。
② scanf的具体表现是怎样的? 给个例子? 一般应该避免使用scanf, 问题太多, 应该用fgets读整个行, 然后自己处理(比如结合sscanf)。
③ c/c++本身没有对文本文件的随机读写。 一般的实现都是全部读入内存作修改的。 结合OS的话, 可以用内存映射,这样即使文件很大都无所谓, 但跨平台性就受影响了。追问比如说要输入两个字符
scanf("%c%c",&ch1,&ch2);
输入:ab
结果ch1=
ch2=a
我得到的结果是用printf("ch1=%d ch2=%d\n",ch1,ch2);
输出的结果还换行了追答你的ch1和ch2是什么类型? 如果是char的话, 输出结果应该是正常的97和98(对于a和b的ascii码);
还有你是如何输入的? ab之间没有空格? 直接回车? 编译的时候, 是否有什么警告?追问printf输出格式写错了,是%c 中间没有空格,直接回车,没有警告


追答这里的scanf和printf是否是在一个循环里面?这个显然是由于输入缓冲里面存在有字符,例如\n, 这可能是前面有输入换行时导致的。如果就只有这一个scanf和printf, 应该是没有问题的。

你可以作一个测试,在scanf“后面”, printf前面添加下面一句:
while ((ch = getchar()) != '\n' && ch != EOF);
作用是清除输入缓冲(scanf键入ab后的回车符),看看效果如何?

再次说明scanf的问题所在, 应尽量避免。 又: fflush(stdin)这种清除方法, 也要避免, 按标准, 这个的行为是不定的。 不同的编译器也许会有不同的结果, 但也可能有效。
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-01-17 03:05
你是在编程吗?如果是编程的话,意思是你把“count”重新定义了,这样系统搞不清楚你对“count”的定义到底是什么,所以它让你看你之前的定义
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息