对于大多数语言来说,拥有名称空间似乎是不费吹灰之力的.但据我所知,ANSIC并不支持它.为什么不行?有没有计划把它包括在future 的标准中?

推荐答案

C确实有名称空间.一个用于 struct 标记,另一个用于其他类型.考虑下面的定义:

struct foo
{
    int a;
};

typedef struct bar
{
    int a;
} foo;

第一个文件有tag个foo,而后一个文件被做成带有tyecif的foo类型.仍然没有发生名称冲突.这是因为 struct 标记和类型(内置类型和类型定义类型)位于不同的名称空间中.

C不允许的是随意创建new个名称空间.C在被认为在语言中很重要之前就已经被标准化了,添加名称空间也会威胁向后兼容性,因为它需要名称损坏才能正常工作.我认为这可以归因于技术问题,而不是哲学.

编辑:

C++相关问答推荐

如何将字符串argv[]赋给C中的整型数组?

C是否用0填充多维数组的其余部分?

是否可以使用指针算法在不对齐的情况下在 struct 中相同类型的字段的连续序列之间移动?

是什么让numpy.sum比优化的(自动矢量化的)C循环更快?

进程在写入管道时挂起

如何用c语言修改shadow文件hash部分(编程)?

For循环中的变量行为不符合预期.[C17]

为四维数组中的Dim-1和Dim-3重新分配空间

为什么Linux无法映射这个PT_LOAD ELF段?

对于STM32微控制器,全局偏移表.get和.Got.plt必须为零初始化

C23标准是否向后兼容?

强制GCC始终加载常量(即只读),即使启用了优化

C:面筋蛋白';为什么不刷新窗口?

我错误地修复了一个错误,想了解原因

gdb - 你能找到持有内部 glibc 锁的线程吗?

这些表达式是否涉及 C 中定义的复合文字?

如何向 execl 创建的后台程序提供输入?

全局变量 y0 与 mathlib 冲突,无法编译最小的 C 代码

创建 makefile 来编译位于不同目录中的多个源文件

运行以下 C 程序时出现分段错误