问题标签 [global-namespace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2782 浏览

c++ - 命名空间和自由函数

我有一个自由函数,foo定义在命名空间 N 中。 的标头foo位于全局包含搜索路径中,因此任何人都可以通过包含来调用它foo.h

foo调用另一个本地的自由函数 ,foo1它在 中定义foo.cpp

我应该放入foo1未命名的命名空间还是放入namespace N?还是没关系?

更新

我想限制 to 的foo1范围foo.cpp

0 投票
1 回答
908 浏览

c# - 在 XAML 中强制执行全局命名空间

在 XAML 中,可以使用xmlns指令导入自定义命名空间:

在 C# 中,可以使用

此外,基于全局(根)命名空间对该命名空间的评估可以强制执行如下:

如何根据 XAML 中的全局命名空间强制执行评估?


背景:

我面临着(诚然有点晦涩)的情况,即存在这样一个 namespace global::GreatStuff,其中包含一个名为 ... 的 WPF 控件类GreatStuff(即完全限定,global::GreatStuff.GreatStuff在 C# 中)。在同一个命名空间中,我想在 WPF 窗口中使用该控件。

有趣的是,在这个星座中,我不能在窗口的 XAML 文件中的任何类型控件上使用Name/属性:x:Nameglobal::GreatStuff.GreatStuff

“GreatStuff.GreatStuff”类型中不存在类型名称“GreatStuff”。(CS0426)

请注意,如果我不指定Name/x:Name属性,则相同的文件编译得很好!

现在,为什么编译器应该假设通过设置Name/x:Name属性,我正在尝试访问名为 的东西GreatStuff.GreatStuff.GreatStuff

可以通过检查.g.cs从窗口 XAML 文件生成的文件来找到答案。在该文件中,XAML 片段

被编译为以下 C# 片段:

也就是说,使用完全限定的名称,但没有显式的全局名称空间标记。

当然,作为 namespace 类中的一个字段global::GreatStuff,所有这些都被包裹在

因此,可怜的 C# 编译器不禁假设它stuff应该是 type global::GreatStuff.GreatStuff.GreatStuff。如果在

我可以强制在强制全局命名空间时可以转换任何提及该命名空间前缀的内容。

由于此问题之外的原因,此处不能选择更改命名空间和/或类名。

0 投票
1 回答
86 浏览

c++ - Qt Creator IDE 似乎错误地将 reinterpret_cast<::GlobalType> 标记为无效

我目前正在将一些类文件从我们的 Visual Studio 源环境移动到 Qt Creator(版本 3.4.2)。

我进行了一些更改以适应编译器中的差异(进入 MinGW)。令我困惑的一件事是 IDE 报告了一个特定的错误(红色下划线),但仍然可以正常编译。

我很确定这个问题与使用reinterpret_cast<T>where Tis a global namespace 无关。

例如,以下行将在 IDE 中显示为不正确,但仍可编译:

工具提示指出:

预期的 ';' 得到 ':'

如果我更改代码以::LPDWORD语法中删除,突出显示就会消失。这在 IDE 中会很好:

我怀疑这是 IDE 中的错误。这是一个安全的假设吗?

我不打算更改使用全局命名空间的代码样式。

0 投票
1 回答
2286 浏览

php - 将在自动加载的命名空间类文件中声明的函数转换为全局函数

我的要求可能看起来很糟糕,但我还是想知道它是否可行。

我正在使用作曲家自动加载我的课程。在其中一个类文件中,我想定义一个可以在全局命名空间中用作简写的函数。由于作曲家的要求,该类需要命名空间。

我的问题:有什么方法可以通过细微的改动来实现这个工作吗?

MyClass.php:

索引.php:

作曲家.json

尽管阅读的链接比我数的多,但我已经尝试了所有我能想到的东西,但没有运气。

谢谢

0 投票
1 回答
272 浏览

ruby - “污染全局命名空间”是什么意思?

在 ruby​​ 中,一些 gem 选择“污染全局命名空间”。

这是什么意思?
我怎样才能看到它发生在哪里?
为什么宝石需要这样做?

当面对两个污染全局命名空间并相互冲突的 gem 时,当我选择“隔离”一个时,我会做出什么权衡?

例如:

我正在使用两个都污染全局命名空间的 gem:prygli,所以我无法再将我binding.pry的 s 放在我想要的地方。

一种解决方案是将整个 cli 包装在一个模块中:

现在我可以在binding.pry任何我想要的地方使用我的 s。

为什么这样做?
当我选择“隔离 gli”时,我做了哪些权衡?还是“隔离GLI::App模块”?

0 投票
1 回答
1363 浏览

c++ - C ++在命名空间中声明与全局命名空间中的函数同名的函数

我对 C++ 中的函数声明范围有疑问。假设 using#include <cmath>将函数符号引入全局命名空间。根据我的理解,原则上应该只在命名空间中引入符号std,但在实践中,根据我自己的经验,一些符号会出现在全局命名空间中。这个答案似乎证实了这一点:cmath header chaos

现在,当我在 a 中声明一个函数(与全局命名空间中的函数具有相同的原型)时会发生什么namespace foo { }?例如,假设sqrt()from<cmath>以全局命名空间结尾,我有:

模板被解析为 symbol double sqrt( double x ),这似乎应该与全局命名空间中的那个冲突。它似乎有效,但这通常是一种不好的做法吗?

更一般地说,在同一命名空间内使用时,在命名空间内声明的函数是否优先于全局函数?这是否以任何方式违反 C++ 标准?

0 投票
1 回答
43 浏览

.net - 如果不删除命名空间或在前面添加全局,则无法引用属性

我得到了一个包含多个项目的解决方案并且工作正常。美好的一天,出现了数百个错误,显然是不知从何而来!

经过数小时试图找出原因后,我注意到项目中具有命名空间“ IBS_DAL”的任何属性都不能被引用为IBS_DAL.PropertyName. 它可以被引用为Global.IBS_DAL.PropertyName 或只是PropertyName。错误指出:

类型IBS_DAL.PropertyName未定义。

谁能告诉我我的解决方案可以改变什么。

示例代码:

在此处输入图像描述

在项目IBS DAL中,P1工作正常,但P2没有。外部项目IBS DAL,两者都工作正常。

谢谢太平绅士

0 投票
3 回答
629 浏览

c++ - 是否有使用 C 库中的符号而不是通过命名空间 std 的 GCC 警告?

考虑以下(错误的)C++ 代码:

这段代码有问题,因为它调用abs(meaning ::abs) 而不是std::abs. 根据实现,::abs可能不存在,或者它可能是 C abs,或者它可能是一个重载集,包括一个版本double,就像std::absis。

在 Linux 上使用 Clang,至少在我的环境中,它是第二种选择: C abs。这会引发两个警告,即使没有明确启用任何警告:

在 GCC 上,我在不同的环境中得到不同的结果,我还没有弄清楚环境的哪些细节是相关的。不过,更常见的选项是它调用 Cabs函数。但是,即使使用-Wall -Wextra -pedantic,它也不会发出警告。我可以用 强制发出警告-Wfloat-conversion,但这会给我的代码库的其余部分带来太多误报(也许我应该修复,但这是一个不同的问题):

std每当我通过全局命名空间使用库函数时,当命名空间中的版本是重载时,有没有办法获得警告?

0 投票
2 回答
231 浏览

c - 使用结构作为交流“命名空间”的缺点

我经常将一组相关的全局函数和变量包装在一个结构中,为它们创建一种“命名空间”,例如

然后将其与.c设置函数和常量的文件链接。

这使我可以创建全局名称而不必担心名称空间中的内容以及稍后会出现的内容,它非常干净和方便。

但是我确实担心它通过要求通过指针调用函数而在我的代码中引入了少量的低效率,并且可能还有其他问题。

以这种方式对全局变量进行分组有哪些潜在问题和低效率,无论是程序设计、速度、可执行文件大小还是其他任何问题。

编辑:我刚刚在结构中运行了一个带有空函数的循环,以及一个常规函数。当未应用优化时,结构中的函数更快(20 秒对 26 秒)。优化后,全局函数被完全优化掉,速度更快。似乎除非函数可以内联,否则就速度而言,这没什么大不了的

0 投票
1 回答
742 浏览

python-2.7 - NameError:未定义全局名称“hashed_pwd”

我是 python 和 Flask 的新手。我创建了一个登录和注册页面,一切正常。现在,我在注册页面使用 werkzeug 进行密码安全,密码以加密形式生成并存储在数据库中,但是当我尝试登录时在那里我收到一个错误“NameError:未定义全局名称'hashed_pwd'”,请为我提供解决方案。