我有两个C文件,一个名为main.c
,另一个名为batterysaver.c
。我没有将batterysaver.c
中的代码包含在main.c
文件中,而是使用条件编译,而是希望有两个单独的文件,但是能够设置在给定预处理程序指令的情况下编译哪个文件。这可能吗?
这是main.c
文件的标题:
//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
文件的标题:
#include "main.c"
#if BATTERY
*REST OF FILE STARTS HERE, THEN AT THE END*
#endif
我感谢任何帮助。
答案 0 :(得分:1)
在另一个.cc
文件中包含.cc
文件表示不洁设计。
您可以根据main.cc
是否已定义来有条件地编译batterysaver.cc
和BATTERY
中的部分代码。
如果这不起作用,您必须问自己如何将常用声明放在.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