C++包含不起作用

C++ including doesn't work

本文关键字:不起作用 包含 C++      更新时间:2023-10-16

在最后的几个小时里,我拼命地想弄清楚是什么出了问题,但一无所获:

我有以下场景:我有一个工作头文件,我决定将其中的部分移动到另一个新的文件中。

现在我有:

FileA

......
class A;
.....

文件B

#include FileA
.....
A B;
.....

但是变量A在fileB中根本没有被识别。

  • 所有的定义都在同一个命名空间
  • 没有拼写错误
  • 我在boost库和调试模式下使用我得到:"智能:不兼容的构建选项"(不知道这是否连接到我的问题)
  • 当查看代码时,visual studio识别出所有类型(即当按下文件B中的"A"类型时,visual studio识别出它)。

我做错了什么?

以下是您要求的真实代码和进一步的细节:让我说得更具体一些我正在使用ifndef方法,这可能会导致混乱,但我不明白为什么,因为fileB是唯一一个包含fileA的

代码本身是这样的:

    #ifndef MERKLE_BASICS_HPP
    #define MERKLE_BASICS_HPP
    #include "FullProofConsumer.hpp"
    #include <opensslsha.h>
    namespace PCP_Project{
typedef unsigned char* HashDigest;
//Forward Declarations
HashDigest hashTwoElements(HashDigest,HashDigest);
HashDigest hash_GF2E_Element (GF2E);
HashDigest createZeroCommitment();
//The definition of the hashDigest type, for now its just long. Will be probably       replacedlater. 
//typedef unsigned char* HashDigest;
     }
    #endif

另一个文件是:

                #ifndef MERKLE_CONSUMER
                #define MERKLE_CONSUMER
                #include <fstream>
                #include "MerkleBasics.hpp"
                 namespace PCP_Project{
                 ......
                 HashDigest Value;
                  ...

和编译错误:语法错误:标识符"Value"之前缺少";"
(我有很多这样的例子,这只是一个例子)很抱歉,如果你从原来的问题中理解了一些不同的东西,再次感谢

看起来像在文件A中,你只有一个类的前向声明:

class A;

这意味着你没有一个完整的类定义,因此不能使用它的实例——但是你可以使用指针。

你必须发布更多的代码来获得更多的帮助(正确格式化)。

看看你的问题的描述,我随机猜测-你是否偶然地在两个文件中放置了相同的INCLUDE警卫?在这种情况下,包括A将无法工作。