相关疑难解决方法(0)

118
推荐指数
3
解决办法
3万
查看次数

为什么一个未命名的命名空间是静态的"优越"替代品?

C++标准中的$ 7.3.1.1/2节描述如下:

在声明命名空间作用域中的对象时,不推荐使用static关键字; unnamed-namespace提供了一个更好的选择.

我不明白为什么一个未命名的命名空间被认为是一个更好的选择?理由是什么?我已经知道标准的内容很长一段时间,但我从未认真考虑过,即使我回答这个问题:未命名的命名空间优于静态?

它是否被认为是优越的,因为它也可以应用于用户定义的类型,正如我在回答中所描述的那样?还是有其他原因,我不知道?我问这个问题,特别是因为这是我在答案中的推理,而标准可能会考虑其他因素.

c++ standards iso namespaces

86
推荐指数
3
解决办法
3万
查看次数

如何将功能仅限于主要功能?

让我们说我有

FILE1.C:

#include<stdio.h>
#include"File2.c"

void test(void)
{
sum(1,2);
}

int main(void)
{
int sum(int a,int b);
test();
sum(10,20);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

file2.c中:

int sum(int x,int y)
{
printf("\nThe Sum is %d",x+y);
}
Run Code Online (Sandbox Code Playgroud)

现在我的理解是test()调用sum()应该给出一个编译时错误,因为我已经/声明了sum()本地到main,我没有得到,并且程序运行良好没有任何错误.

我的主要目的是在File2.c中定义sum并使其为main()的本地,这样其他函数就无法看到这个函数sum().

我哪里错了?

c c++ objective-c

3
推荐指数
2
解决办法
1209
查看次数