我正在编写一个应用程序,它是PHP的一部分和一部分C.这两个部分将通过套接字进行通信。作为IPC协议的一部分,应用程序将依赖于“消息类型”字节。例如,如果数据块的第一个字节是1,那么其余部分意味着显示系统信息等。
在C头文件中,我可以定义这些消息类型,如...
#define GET_SYSTEM_INFO 0x1
#define SET_SECURITY_LEVEL 0x2
etc
如果我可以在php部分和c app之间共享的一个文件中定义这些值,我真的很喜欢它。这样,他们正在处理一组常见的配置。它不一定是头文件,但我想知道两种技术是否有一些简单的机制来解析公共文件。
感谢您的任何建议。
答案 0 :(得分:2)
我之前从未使用过C,但我认为它可以轻松解析像PHP这样的INI文件。
请参阅PHP的parse_ini_file()。
答案 1 :(得分:2)
我建议,因为你真的想要进行开发而最终用户不需要访问协议的内部,例如解析一个php文件并为C创建一个include,或者相反通过你的构建脚本。
答案 2 :(得分:1)
这是Google Protocol Buffers和Apache Thrift等项目试图解决的问题。
但是,如果您想自己这样做,有两种方法可以实现。一种是从某些描述生成代码(示例中为#define
)。另一种是在运行时确定消息类型(我猜你不想要)。
无论哪种方式,您都需要采用某种描述格式。例如,您可以编写一个解析INI文件,JSON文件,YAML文件等的小PHP脚本,获取包含C程序的模板,并填充空白以输出最终的C源文件。它取决于您的构建环境,但通常只需将这样的命令行工具集成到您的构建过程中一小步。