【问题标题】:how to define IP address as a constant variable in C programming?如何在 C 编程中将 IP 地址定义为常量变量?
【发布时间】:2012-05-13 21:36:56
【问题描述】:

我需要使用 PC 的 eth0 接口的 IP 地址(Linux 操作系统 - IPv4)。在事先不知道 IP 地址的情况下,如何将其定义为常量变量?

【问题讨论】:

  • 什么操作系统?如果您不知道它先验,则需要进行系统调用来查找它。
  • 语言本身与它无关。您要么需要一个或多或少可移植的库,要么只需要一个系统调用。
  • 这个问题很模棱两可。您没有提供足够的信息。它将用于什么?您可以将其存储为unsigned char[4](或在 IPv6 的情况下为 6),作为字符串,格式为 XXX.XXX.XXX.XXX,作为 BSD 套接字的主机结构类型之一(结构 inaddr 等)。 . !?
  • 我认为更重要的问题是,为什么你需要它是 const ?

标签: c ip


【解决方案1】:

如果您将它们作为指向地址缓冲区的指针,则可以。导出指向const 限定类型的指针

extern your_address_type const*const addr;

你必须让你的库代码看到类似的东西

static your_address_type my_address;
your_address_type const*const addr = &my_address;

然后您可以在您的库中正确初始化my_address,客户端代码只会看到addr,并且无法更改它。

【讨论】:

    【解决方案2】:

    你不能。

    在 C 中定义常量有两种方法:预处理器 (#define) 和常量 (const something)。这两者都要求在编译时知道常量的值¹。因此,如果您的目标是有一种方法来引用此 IP,而在程序执行期间不可能用另一个值覆盖它,那根本不可行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 2014-09-24
      • 2023-03-25
      相关资源
      最近更新 更多