问题标签 [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.
c++ - 命名空间和自由函数
我有一个自由函数,foo
定义在命名空间 N 中。 的标头foo
位于全局包含搜索路径中,因此任何人都可以通过包含来调用它foo.h
。
foo
调用另一个本地的自由函数 ,foo1
它在 中定义foo.cpp
。
我应该放入foo1
未命名的命名空间还是放入namespace N
?还是没关系?
更新
我想限制 to 的foo1
范围foo.cpp
。
c# - 在 XAML 中强制执行全局命名空间
在 XAML 中,可以使用xmlns
指令导入自定义命名空间:
在 C# 中,可以使用
此外,基于全局(根)命名空间对该命名空间的评估可以强制执行如下:
如何根据 XAML 中的全局命名空间强制执行评估?
背景:
我面临着(诚然有点晦涩)的情况,即存在这样一个 namespace global::GreatStuff
,其中包含一个名为 ... 的 WPF 控件类GreatStuff
(即完全限定,global::GreatStuff.GreatStuff
在 C# 中)。在同一个命名空间中,我想在 WPF 窗口中使用该控件。
有趣的是,在这个星座中,我不能在窗口的 XAML 文件中的任何类型控件上使用Name
/属性:x:Name
global::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
。如果在
我可以强制在强制全局命名空间时可以转换任何提及该命名空间前缀的内容。
由于此问题之外的原因,此处不能选择更改命名空间和/或类名。
c++ - Qt Creator IDE 似乎错误地将 reinterpret_cast<::GlobalType> 标记为无效
我目前正在将一些类文件从我们的 Visual Studio 源环境移动到 Qt Creator(版本 3.4.2)。
我进行了一些更改以适应编译器中的差异(进入 MinGW)。令我困惑的一件事是 IDE 报告了一个特定的错误(红色下划线),但仍然可以正常编译。
我很确定这个问题与使用reinterpret_cast<T>
where T
is a global namespace 无关。
例如,以下行将在 IDE 中显示为不正确,但仍可编译:
工具提示指出:
预期的 ';' 得到 ':'
如果我更改代码以::
从LPDWORD
语法中删除,突出显示就会消失。这在 IDE 中会很好:
我怀疑这是 IDE 中的错误。这是一个安全的假设吗?
我不打算更改使用全局命名空间的代码样式。
php - 将在自动加载的命名空间类文件中声明的函数转换为全局函数
我的要求可能看起来很糟糕,但我还是想知道它是否可行。
我正在使用作曲家自动加载我的课程。在其中一个类文件中,我想定义一个可以在全局命名空间中用作简写的函数。由于作曲家的要求,该类需要命名空间。
我的问题:有什么方法可以通过细微的改动来实现这个工作吗?
MyClass.php:
索引.php:
作曲家.json
尽管阅读的链接比我数的多,但我已经尝试了所有我能想到的东西,但没有运气。
谢谢
c++ - C ++在命名空间中声明与全局命名空间中的函数同名的函数
我对 C++ 中的函数声明范围有疑问。假设 using#include <cmath>
将函数符号引入全局命名空间。根据我的理解,原则上应该只在命名空间中引入符号std
,但在实践中,根据我自己的经验,一些符号会出现在全局命名空间中。这个答案似乎证实了这一点:cmath header chaos。
现在,当我在 a 中声明一个函数(与全局命名空间中的函数具有相同的原型)时会发生什么namespace foo { }
?例如,假设sqrt()
from<cmath>
以全局命名空间结尾,我有:
模板被解析为 symbol double sqrt( double x )
,这似乎应该与全局命名空间中的那个冲突。它似乎有效,但这通常是一种不好的做法吗?
更一般地说,在同一命名空间内使用时,在命名空间内声明的函数是否优先于全局函数?这是否以任何方式违反 C++ 标准?
c++ - 是否有使用 C 库中的符号而不是通过命名空间 std 的 GCC 警告?
考虑以下(错误的)C++ 代码:
这段代码有问题,因为它调用abs
(meaning ::abs
) 而不是std::abs
. 根据实现,::abs
可能不存在,或者它可能是 C abs
,或者它可能是一个重载集,包括一个版本double
,就像std::abs
is。
在 Linux 上使用 Clang,至少在我的环境中,它是第二种选择: C abs
。这会引发两个警告,即使没有明确启用任何警告:
在 GCC 上,我在不同的环境中得到不同的结果,我还没有弄清楚环境的哪些细节是相关的。不过,更常见的选项是它调用 Cabs
函数。但是,即使使用-Wall -Wextra -pedantic
,它也不会发出警告。我可以用 强制发出警告-Wfloat-conversion
,但这会给我的代码库的其余部分带来太多误报(也许我应该修复,但这是一个不同的问题):
std
每当我通过全局命名空间使用库函数时,当命名空间中的版本是重载时,有没有办法获得警告?
c - 使用结构作为交流“命名空间”的缺点
我经常将一组相关的全局函数和变量包装在一个结构中,为它们创建一种“命名空间”,例如
然后将其与.c
设置函数和常量的文件链接。
这使我可以创建全局名称而不必担心名称空间中的内容以及稍后会出现的内容,它非常干净和方便。
但是我确实担心它通过要求通过指针调用函数而在我的代码中引入了少量的低效率,并且可能还有其他问题。
以这种方式对全局变量进行分组有哪些潜在问题和低效率,无论是程序设计、速度、可执行文件大小还是其他任何问题。
编辑:我刚刚在结构中运行了一个带有空函数的循环,以及一个常规函数。当未应用优化时,结构中的函数更快(20 秒对 26 秒)。优化后,全局函数被完全优化掉,速度更快。似乎除非函数可以内联,否则就速度而言,这没什么大不了的
python-2.7 - NameError:未定义全局名称“hashed_pwd”
我是 python 和 Flask 的新手。我创建了一个登录和注册页面,一切正常。现在,我在注册页面使用 werkzeug 进行密码安全,密码以加密形式生成并存储在数据库中,但是当我尝试登录时在那里我收到一个错误“NameError:未定义全局名称'hashed_pwd'”,请为我提供解决方案。