我有两个 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.cc
和 batterysaver.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/