基于 #define 的代码的两个版本

Two versions of a code based on a #define

我正在使用微控制器并使用 C/C++ 进行编写,我想将只适用于发射器的内容与适用于接收器的内容分开。为此,我考虑过将 #define DEVICE 0 设为 0 表示发射器,1 表示接收器。

我如何使用这个定义来取消其他定义?我有多个定义只能在其中一个设备上工作。

您有以下指令:

#if (DEVICE == 0)
  ...
#else
  ...
#endif

确保代码是独占的。

尽管我建议动态执行:您可以有一个布尔型全局 attribute/function 参数并根据其值执行代码。

  • 代码将在特定目标上 optimized-out(即使使用最低的优化设置)。
  • 一次编译就足以检查编译错误,而不是 2 次定义更改。 请记住,您仍然需要为要更改的布尔值定义一个定义,因此要测试每种情况,但这可以通过任何动态代码分析自动完成,而使用 #define 实现是不可能的。