gpt4 book ai didi

c++ - #ifdef 不接受枚举定义

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:23 24 4
gpt4 key购买 nike

我目前正在开发一个项目,涉及7个文件:main.cppGpioInterface.hGpioInterface.cppUtility.hUtility.cpp

基本上,在 main.cpp 文件中,我使用 #define BOARD_TYPE WHATEVER 声明了电路板类型,然后在 GpioInterface.h 中,我定义了一些定义此宏时的值。

看起来像这样:

主要.cpp:

#define __USE_BOARD_ WHATEVER // This should go in an external file in the future
#ifdef __USE_BOARD_
// Define some stuff
#endif

#include "GpioInterface.h"
#include "Utility.h"

// main function here

Gpio接口(interface).h:

#ifndef GPIO_INTERFACE_H
#define GPIO_INTERFACE_H

#include <stdint.h>
#include <stdio.h>

#ifdef __USE_BOARD_

enum GPIO_PIN_MODE {
GPIO_PIN_MODE_OUTPUT = 0x00,
GPIO_PIN_MODE_INPUT = 0x01,
};

enum GPIO_PIN_STATE {
GPIO_PIN_STATE_LOW = 0x00,
GPIO_PIN_STATE_HIGH = 0x01,
};

#endif // __USE_BOARD_
// some other stuff
#endif // GPIO_INTERFACE_H

实用工具.cpp:

#include "Utility.h"
#include "GpioInterface.h"

void someFunction() {
GPIO_digitalWrite(2, GPIO_PIN_STATE_HIGH); // Write HIGH in pin 2
}

编译时,GpioInterface.h 文件出现以下错误 'GPIO_PIN_STATE_HIGH' was not declared in this scope

知道如何使 GpioInterface.h 中定义的枚举对 Utility.cpp 可见吗?

谢谢!

最佳答案

main.cpp 编译正确由于

#define __USE_BOARD_ WHATEVER // This should go in an external file in the future

一开始。在 Utility.cpp 中你没有那个定义,所以包含“GpioInterface.h”没有定义枚举。

关于c++ - #ifdef 不接受枚举定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47885235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com