Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
“如何定义”;常数;C语言中的结构_C_Unix_Struct_Header - Fatal编程技术网

“如何定义”;常数;C语言中的结构

“如何定义”;常数;C语言中的结构,c,unix,struct,header,C,Unix,Struct,Header,我正在Unix中开发一个相对简单的程序,一个模拟餐厅的客户机-服务器交互。 基本上,进入餐厅/服务器的客户可以通过FIFO订购一个或多个菜肴发送给“厨师”。 菜单必须设置在某个地方,并且服务器和客户端都可以访问。它必须是一系列碟形结构。我的第一个想法是将所有这些都包含在自定义头文件中: 在shared.h中 typedef struct _dish{ char name [MAX_LEN]; //name of food int id;

我正在Unix中开发一个相对简单的程序,一个模拟餐厅的客户机-服务器交互。 基本上,进入餐厅/服务器的客户可以通过FIFO订购一个或多个菜肴发送给“厨师”。 菜单必须设置在某个地方,并且服务器和客户端都可以访问。它必须是一系列碟形结构。我的第一个想法是将所有这些都包含在自定义头文件中: 在shared.h中

   typedef struct _dish{
   char name [MAX_LEN];     //name of food
   int id;                  //ID
   int preptime;            //time needed to prepare it
   } dish;

   typedef struct _request {    
   pid_t cpid;              //client pid
   dish menu [MENUSZ];      //array of dishes
   } request;
通过这种方式,客户机以“随机”的方式选择盘子,并将请求发送到服务器。 我的问题是:如何以及在哪里列出所有可用的菜肴? 此“菜单”必须适用于所有客户,并单独定义。 为了举例说明我的意思,我必须做类似的事情:

  dish dish1;

  dish1.name = "Pasta";
  dish1.id = 1;
  dish1.preptime = 5;
类似这样的东西,一个存储在某处的列表,客户端(很可能是服务器)可以访问该列表,这样可以更容易地将信息发送到服务器,这样我就可以只发送ID,服务器就已经知道它是哪种食物了。
提前谢谢

如果将它们放在标题中,则在菜单更改时需要重新编译服务器和客户端;根据您的需求,更好的设计是将它们放在服务器上的配置文件中,并让客户端请求–Christoph

如果您没有破解编译器或libc,请避免使用前导下划线-如果有,请使用尾随下划线(结构和typedef使用相同的名称没有错)因此,您想知道如何初始化
盘的数组
?不是如何初始化,而是最好的方法是什么。如果我需要列出10种不同的菜肴,那么让它们易于接触和“使用”的最佳方法是什么?我可以把它们包括在标题中吗?或者我应该创建一个菜单结构,从服务器填充它,并将其添加到共享内存中?@EdoardoArnaudo:如果将它们放在头中,则在菜单更改时需要重新编译服务器和客户端;根据您的需求,更好的设计是将它们放在服务器上的配置文件中,并让客户端请求it@Christoph:谢谢!您的配置文件解决方案给了我一个类似的想法,创建了一个简单的“menu.txt”,让进程通过一种读取函数从中读取。看起来像是为我的目的工作!