CPP - 在库中更改#define

时间:2015-10-12 07:44:42

标签: c++ arduino

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

这是Arduino以太网库: Arduino Ethernet Library

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

在ethernet.h中有

包含语句。

<div style='display:none !important; visibility:hidden; opacity:0;
   color:transparent; height:0; width:0; mso-hide:all; line-height:0px; 
        font-size:0px'><table style='display:none !important; visibility:hidden; opacity:0;
   color:transparent; height:0; width:0; mso-hide:all; line-height:0px; 
        font-size:0px'><tr><td>DATA</td></tr></table></div>

并且在dhcp.h中有宏。

#include "dhcp.h"

在dhcp.cpp中使用了这个宏

#define HOST_NAME "MYBOARD"

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

例子。 在我的源代码中

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

应该将值传递给dhcp.cpp中的HOST_NAME

我对c ++知之甚少,需要示例代码的帮助。

谢谢

的Sudhir

3 个答案:

答案 0 :(得分:1)

#define是预处理程序指令(&#34;宏&#34;),而不是变量。你无法在运行时修改它。

一种可能性是将#define HOST_NAME "MYBOARD"替换为您想要的任何内容。如果由于某种原因无法执行此操作,请搜索使用HOST_NAME的位置并将其替换为自定义变量。没有其他细节,我无法帮助你。

答案 1 :(得分:0)

您无法更改HOST_NAME,因为它已在您的dhcp.h文件中定义,

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

有关#define的更多信息:

Why use #define instead of a variable

答案 2 :(得分:0)

我能够获得结果

在dhcp.h中我替换了

#define HOST_NAME "my-host-name"

extern const char  HOST_NAME[10] ;

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

const char HOST_NAME[] = "MYHOSTONE";

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

感谢