首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C预编译器实现之间的切换

C预编译器实现之间的切换
EN

Stack Overflow用户
提问于 2017-03-17 22:30:59
回答 2查看 65关注 0票数 0

我对C语言编程相当陌生,我的问题是,我有两个函数实现,我希望能够轻松地在它们之间切换。

现在,我将函数的两个实现定义为“function_implementation1”和"funtion_implementation2.h“文件中的function_implementation1和funtion_implementation1.h。为了在它们之间切换,我有以下文件:

代码语言:javascript
复制
#define IMPLEMENTATION1

#ifdef IMPLEMENTATION_1
    #include "funtion_implementation1.h"
    #define myFunction function_implementation1
#endif

#ifdef IMPLEMENTATION_2
    #include "funtion_implementation2.h"
    #define myFunction function_implementation2
#endif

为了从一个实现切换到另一个实现,我只需更改第一行。这种方法很有效,我对它满意了一段时间,但现在我不得不经常打开这个文件,这让我感到困扰。我有一个参数s.h文件,其中我定义了我的所有参数,我更愿意选择在该文件中使用哪个实现。遗憾的是,将第一行移到该文件中不起作用。如果我这样做了,myFunction就不会被定义。

做这件事最好的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-17 22:34:52

您应该将参数文件包括在其中使用别名、宏等:

代码语言:javascript
复制
#include "Parameters.h"

此外,您的所有头文件都应该以以下内容开头:

代码语言:javascript
复制
#ifndef __FILE_H__
    #define __FILE_H__

// definitions go there

#endif

这样可以防止头文件的嵌套包含。

票数 1
EN

Stack Overflow用户

发布于 2017-03-17 22:35:31

使用预处理选项,特别是-D选项。如果希望使用IMPLEMENTATION1,则在命令行(或在IDE中)编译该文件时,添加-D IMPLEMENTATION1。这定义了这个宏。对任何宏都是相同的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42868072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档