小编Mic*_*ell的帖子

神秘案例常量不止一次定义错误

我正在使用C语言商业RTOS的套接字库来开发嵌入式项目.出于保密原因,我对某些周围的细节会非常模糊,但只知道有一个完整的产品和RTOS堆栈.

在我正在研究的部分中,我有一个相当大但很简单的switch语句,它检查一个宏值并设置另一个宏值.案例值是RTOS标头中的套接字选项标志.当我用这个switch语句编译文件时,我得到一个错误,说"不止一次定义了case case",指的是其中五个案例.

以下是一些让这个神秘的细节:

  1. 包裹所有标题#ifndef HEADER以避免多个包含.
  2. 宏值来自多个不同的标题,但是案例是否产生此错误与原始标题之间没有明显的相关性.
  3. 如果我注释掉单个定义或者没有明确地包含该标题,我会得到"未定义的标识符",因此它明确地与该文件和定义相关联.
  4. 如果我在Eclipse中执行"C/C++"搜索宏,它会列出定义的两个实例,但它们都引用同一文件中的相同位置.

我是由一位资深开发人员在这里经营的,他和我一样神秘.有没有人知道可能导致这种情况的C解释的怪癖,或者任何地雷可能被忽视了?

谢谢!

c embedded c-preprocessor

-1
推荐指数
1
解决办法
155
查看次数

标签 统计

c ×1

c-preprocessor ×1

embedded ×1