gpt4 book ai didi

c - 两个文件,使用预处理器进行条件编译

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

我有两个 C 文件,一个名为 main.c,另一个名为 batterysaver.c。不是将我在 batterysaver.c 中的代码包含到 main.c 文件中,而是使用条件编译,我想要两个单独的文件,但能够在给定预处理器指令的情况下设置编译哪个文件。这可能吗?

这是 main.c 文件的 header :

//standard header
#include "pebble.h"
#include "iota.h"
#define BATTERY false

//app-specific data
Window *window; //obvious window is obvious
TextLayer *time_layer; //time layer

#if !BATTERY
*REST OF FILE STARTS HERE, THEN AT THE END*
#endif

这是 batterysaver.c 文件的 header :

#include "main.c"

#if BATTERY
*REST OF FILE STARTS HERE, THEN AT THE END*
#endif

感谢所有帮助。

最佳答案

在另一个 .cc 文件中包含一个 .cc 文件表明设计不干净。

您可以根据 BATTERY 是否已定义,有条件地编译输入/输出 main.ccbatterysaver.cc 中的部分代码还是不是。

如果这不起作用,您必须问问自己如何将通用声明放在 .h 文件中并将 .h 文件包含在 .cc 文件。

my_common.h

#ifndef MY_COMMON_H
#define MY_COMMON_H

//standard header
#include "pebble.h"
#include "iota.h"
#define BATTERY false

//app-specific data
extern Window *window; //obvious window is obvious
extern TextLayer *time_layer; //time layer

#ENDIF

main.cc

#include "my_common.h"

Window *window; //obvious window is obvious
TextLayer *time_layer; //time layer

#if !BATTERY
*REST OF FILE STARTS HERE, THEN AT THE END*
#endif

battarysaver.cc

#include "my_common.h"

#if BATTERY
*REST OF FILE STARTS HERE, THEN AT THE END*
#endif

关于c - 两个文件,使用预处理器进行条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23298989/

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