gpt4 book ai didi

c - 使用 C#define 变量作为 #include

转载 作者:太空狗 更新时间:2023-10-29 16:13:00 25 4
gpt4 key购买 nike

我有以下代码,其中包含一个基于#define 变量的库:

#if LIB_SELECTOR==1
#include "path/to/lib1.h"
#else
#include "path/to/lib2.h"
#endif

但是,这个库需要包含在许多源文件中,并且在所有这些文件中保持这个条件可能会出现问题并且容易出错。理想情况下,我会简单地做类似的事情:

#if LIB_SELECTOR==1
#define DYNAMIC_LIB "path/to/lib1.h"
#else
#define DYNAMIC_LIB "path/to/lib2.h"
#endif

然后,在所有必需的源文件中,只需使用

#include DYNAMIC_LIB

我已经在我的代码中尝试过,并收到错误 error: #include expects "FILENAME" or <FILENAME> .这并没有给我太大希望,但我想知道解决这个问题的正确方法是什么。

最佳答案

您拥有的应该可以工作,但是使用 #include DYNAMIC_LIB 的文件必须首先定义 DYNAMIC_LIB。在失败的源文件上,您可以测试:

#ifndef DYNAMIC_LIB
#error "DYNAMIC_LIB is not defined!"
#endif
#include DYNAMIC_LIB

您不必在所有源文件中都维护该条件。您可以创建一个具有条件的头文件,并让您的其他源文件包含该文件。例如:

/* lib_selector.h */
#pragma once
#if LIB_SELECTOR==1
#include "path/to/lib1.h"
#else
#include "path/to/lib2.h"
#endif

然后所有其他源文件将#include "lib_selector.h"

关于c - 使用 C#define 变量作为 #include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17871120/

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