CPP -在库中更改#define

CPP - Change #define in library

本文关键字:#define CPP      更新时间:2023-10-16

我正在修改CPP Arduino库。目的是在用户代码中添加主机名。

这是Arduino以太网库:Arduino Ethernet Library

我在源代码中使用了ethernet.h。

in ethernet.h有include语句

#include "dhcp.h"

和dhcp.h宏中有

#define HOST_NAME "MYBOARD"

在dhcp.cpp中使用

#include "dhcp.h" 
buffer[17] = strlen(HOST_NAME) ; // length of hostname + last 3 bytes of mac address
strcpy((char*)&(buffer[18]), HOST_NAME);

这个宏可以替换为变量,这样我可以为HOST_NAME赋值是我的源代码吗?

的例子。在我的源代码

 variable_name ="MYBOARD1"

应该在dhcp.cpp

中将值传递给HOST_NAME

我不太懂c++,需要帮助的例子代码。

谢谢

Sudhir

#define是预处理器指令("宏"),而不是变量。你无法在运行时修改它。

一种可能性是用任何你想要的东西代替#define HOST_NAME "MYBOARD"。如果由于某种原因您不能这样做,请搜索使用HOST_NAME的位置并将其替换为您的自定义变量。如果没有更多的细节,我无法帮助你。

您不能更改HOST_NAME,因为它已经在您的dhcp.h文件中定义了,

如果你想改变你必须声明它为一个全局变量而不是#define

关于#define:

的更多信息

为什么用#define代替变量

我能够达到的结果

在dhcp.h中我替换了

#define HOST_NAME "my-host-name"

extern const char  HOST_NAME[10] ;

然后在我的项目源代码中我使用

const char HOST_NAME[] = "MYHOSTONE";

编译后我运行代码,在DHCP服务器日志中观察到,它显示正确的主机名。我认为这是肮脏的伎俩,我请求专家帮我清理这一行。

谢谢