通常教程会告诉您在创建新的 XML 命名空间时使用自己的域名。不是每个人都拥有域,它需要花钱,而且该站点可能与您使用 XML 的目的无关。
什么是好的替代方案?
在这个答案中,示例只有some_identifier,但维基百科说它是一个 URI。URI 可以是 URL 或 URN。
URL 可以提供到模式的链接,但是命名空间的主要目的是作为唯一标识符,因此 URN 更适合。
如何生成唯一标识符?UUID 非常适合用作标识符,所以我搜索了一下, W3C上甚至有一个示例:
<?xml:namespace ns='urn:uuid:C4ED1820-6207-11d1-A29F-00AA00C14882/'
src='http://www.w3.org' prefix='w3c' ?>
Run Code Online (Sandbox Code Playgroud)
为什么人们不更频繁地使用 UUID?UUID 命名空间的缺点或基于域的命名空间的优点是什么?如果您的域名过期,您可能会丢失它并且必须更改所有命名空间。
在这个页面上它说:
"00"说明符使该值四舍五入到小数点前面的最近数字,其中始终使用从零开始的舍入.例如,使用"00"格式化34.5将导致值35.
"00"是一个特例还是一个例子?为什么特别挑出来?
除"00"以外的格式的舍入模式是什么?它特别提到了整数舍入; 怎么样在小数点后n位舍入?
ToString("0")做什么?它是否与"00"相同但没有舍入?
我尝试了ToString("00"),它给了我一个零填充数字,我只期待一个数字.
我有以下代码:
#include <iostream>
#include <llvm/Module.h>
#include <llvm/LLVMContext.h>
#include <llvm/Support/raw_os_ostream.h>
int main()
{
llvm::Module *TheModule = new llvm::Module("my cool jit", llvm::getGlobalContext());
llvm::raw_os_ostream os(std::cerr);
TheModule->print(os, NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想做的是改变这个:
llvm::raw_os_ostream os(std::cerr);
TheModule->print(os, NULL);
Run Code Online (Sandbox Code Playgroud)
对此:
TheModule->print(llvm::raw_os_ostream(std::cerr), NULL);
Run Code Online (Sandbox Code Playgroud)
即删除不需要的临时变量.这在C++中是否可行?
打印功能参考:
void print(raw_ostream &OS, AssemblyAnnotationWriter *AAW) const
Run Code Online (Sandbox Code Playgroud)
那么有没有办法将临时对象转换为引用?这可以用C++ 11 rvalue引用来完成吗?我无法更改API.这不应该是rvalue引用的用例吗?