我将抽象我的问题以避免包含不需要的细节,但如果需要,我可以提供源代码。我正在使用视觉工作室。
我有以下文件 - 所有头文件都有 #pragma 一次:
- A.cpp //(包含我的主要功能)
- 溴化氢
- B.cpp //(不扮演任何角色)
- 通道
- C.cpp
以下是预处理器命令的设置方式:
A.cpp #defines UseOptionOne
A.cpp #includes B.h
B.h #ifdef UseOptionOne
#defines Func as f1() //(calling a function that prints a msg)
#else
#defines Func as [blank]
A.cpp #includes C.h
C.h #includes B.h // (B.h have #pragma once, so it doesnt get included again)
以下是函数调用的设置方式:
A.cpp main function uses Func //- It prints as intended
A.cpp calls function in C.cpp // this function does the following:
{
#ifndef UseOptionOne
exit(0) //- Doesn't happen, so UseOptionOne is defined
#endif
uses Func //- DOES NOTHING?????
}
A.cpp uses Func //- It prints as intended
我不明白这怎么可能?确认 UseOptionOne 仍然在 Ch 中定义,但 Func 定义不同???
谁能解释一下?或者你想让我为你提供我相当复杂的解决方案或一些代码片段吗?
我真的迷路了:(
编辑:我已经使用断点来确认调用了 C.cpp 函数,'Func' 被简单地视为空白
EDIT2:由于缺乏声誉,我无法回答我自己的问题,所以我把它放在这里:
我创建了一个实现我的抽象描述的新项目,它确实触发了#ifndef 中的退出
所以你们中的任何人都无法用这个描述解决问题。我将不得不再次查看所有内容并找到错误/错误。