小编Jas*_*son的帖子

IIS中的Hgweb"推送"返回502(坏网关)

我已经在II7 7上运行了hgweb(在Windows Server 2008上).Web界面工作,我可以在那里查看,拉取和克隆存储库.但我不能推,这样做在"搜索更改"后立即给我一个502错误.使用--debug将最后几行显示为:

sending unbundle command
sending 622 bytes
HTTP Error: 502 (Bad Gateway)
Run Code Online (Sandbox Code Playgroud)

我正在使用TortoiseHG进行推送,但使用mercurial命令行时结果相同.

我按照这里的教程:http://www.sjmdev.com/blog/post/2011/03/30/setting-mercurial-18-server-iis7-windows-server-2008-r2.aspx来设置hgweb.

iis mercurial

9
推荐指数
1
解决办法
4726
查看次数

C++常量预处理器宏和模板

所以说我有以下非常简单的宏,以及输出它的一些代码:

#define SIMPLEHASH(STRING) STRING[1] + STRING[2] + STRING[3]
std::cout <<  SIMPLEHASH("Blah");
Run Code Online (Sandbox Code Playgroud)

这输出309,如果您查看程序集,您可以看到:

00131094  mov         ecx,dword ptr [__imp_std::cout (132050h)] 
0013109A  push        135h 
0013109F  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (13203Ch)] 
Run Code Online (Sandbox Code Playgroud)

哪里135h很好地翻译成309十进制.一切都被编译成一个常数.


现在,假设你有一个模板类:

template<int X> class Printer{
public:
 void Print(){
  std::cout << X;
 }
};
Run Code Online (Sandbox Code Playgroud)

然后以下将很好地打印数字32:

Printer<32> p;
p.Print();
Run Code Online (Sandbox Code Playgroud)

这两件事都是单独的,当你试图将它们组合起来时就会出现问题:

#define SIMPLEHASH(STRING) STRING[1] + STRING[2] + STRING[3]
 Printer<SIMPLEHASH("Blah")> p;
 p.Print();
Run Code Online (Sandbox Code Playgroud)

在visual studio中,这给出了:

1>.\ ShiftCompare.cpp(187):错误C2975:'X':'Printer'的模板参数无效,预期编译时常量表达式
1>.\ ShiftCompare.cpp(127):参见'X'的声明

尽管SIMPLEHASH("Blah")可以在编译时将其简化为常量,如第一个示例所示.

那么,有什么方法可以告诉编译器"先评估一下"?在预处理器评估中自然是"之前"的模板?

有谁看到我可以让这两个人一起工作?

c++ macros templates c-preprocessor

3
推荐指数
1
解决办法
1505
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

iis ×1

macros ×1

mercurial ×1

templates ×1