0

例如,我有一个 can.h 头文件,其中包含

   #ifdef MC
    extern int speed;
    // many more variables and function prototypes
   #endif

编辑:我希望用户有一个选项来定义启用此类变量和函数原型的 MC。它将在 C main 中与包含指令一起定义(例如#define MC),但是,其他头文件无法链接到 main.c。相反,我最终在 can.h 标头本身中定义了此类宏。我能想到的就是写一个 main.h,can.h 将包含 main.h。还有其他方法可以解决这个问题吗?

4

5 回答 5

1

我并不完全清楚你想要做什么,但也许你想要这个:

/* in file can.h */
extern int speed;

接着

/* in file main.c */
#include "can.h"

int speed;

标头can.h只是声明存在,speed以便其他模块可以将其作为外部符号引用。然后,当您编写.speed

于 2013-10-22T17:54:09.143 回答
0

您可以创建一个配置标头,其中包含您想要定义的所有宏以及#include每个标头中的宏,或者您可以在命令行上定义配置宏。

于 2013-10-22T17:50:06.027 回答
0

使用#include- 然后你得到你需要的那些位

于 2013-10-22T17:52:05.373 回答
0

包含只是预处理器插入的文件内容,在包含之前声明或定义的任何内容都将在包含文件中定义。所以:

#define MC
#include "can.h"

虽然这可以满足您的要求,但我不一定会推荐它,并且可能会质疑设计。

于 2013-10-22T17:53:01.670 回答
-1

您可以在项目级别添加此类宏。这样的宏也称为预处理器定义。Visual Studio 在项目设置/配置中提供了这样的定义。因此,您可以将其添加到那里并编译解决方案以包含提及的声明,或者如果您不想包含它,则将其删除。添加屏幕截图。 在此处输入图像描述

于 2013-10-22T18:40:19.863 回答