Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态加载erlang头文件_Erlang - Fatal编程技术网

动态加载erlang头文件

动态加载erlang头文件,erlang,Erlang,我知道您可以使用“l(module_name)”在erlang节点中动态加载erlang beam文件。我的问题是,是否可以以相同的方式或类似的方式加载“.hrl”文件,而无需重新启动erlang节点我不确定这是否可行,但基于理解,当您尝试在url中定义宏并想要修改它时,编译器在编译erlang文件的过程中,通过替换标头中定义的宏来替换宏 从逻辑上讲,您应该重新构建代码并再次部署它。我不明白为什么你需要动态加载hrl文件,如果你有一个动态替换整个代码的选项。IMHO所有您需要做的就是重建和升级,

我知道您可以使用“l(module_name)”在erlang节点中动态加载erlang beam文件。我的问题是,是否可以以相同的方式或类似的方式加载“.hrl”文件,而无需重新启动erlang节点

我不确定这是否可行,但基于理解,当您尝试在url中定义宏并想要修改它时,编译器在编译erlang文件的过程中,通过替换标头中定义的宏来替换宏

从逻辑上讲,您应该重新构建代码并再次部署它。我不明白为什么你需要动态加载hrl文件,如果你有一个动态替换整个代码的选项。IMHO所有您需要做的就是重建和升级,这也可以在不重新启动erlang节点的情况下完成。

“.hrl”文件-仅由编译器在编译源代码上使用。它不是运行时文件

您可以使用Mochi团队流行的自动重新装载器


将它们放在src/文件夹中,并添加到exec-erl
-s重新加载程序
选项

好的,我现在就知道了,因此,与其尝试直接加载.hrl文件,不如在修改.hrl后重新编译erlang文件并加载更新的梁。既然您专门讨论了宏,那么我可以假设这也适用于.hrl文件中定义的“记录”吗?头文件以及所有编译语言(如果我错了,请纠正我)都包含在编译时,因此构建新梁就足够了。是的,这也适用于记录。请注意,如果修改头文件中的记录定义,则必须重新加载包含该头文件的所有模块(并使用该记录),以免陷入错误匹配错误。啊,谢谢,我一直在想,现在整件事更有意义。运行时也需要hrl文件。仍然是erlang的新手