//源码如下,执行结果如何解释
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
template <DWORD h, DWORD hash, class A>
inline LPVOID pushargEx(A a1)
{
typedef LPVOID (WINAPI *newfunc)(A);
printf("1:h=%d,hash=%d\n",h,hash);
return 0;
}
template <DWORD h, DWORD hash, class A, class B>
inline LPVOID pushargEx(A a1, B a2)
{
typedef LPVOID (WINAPI *newfunc)(A, B);
printf("2:h=%d,hash=%d\n",h,hash);
return 0;
}
template <DWORD h, DWORD hash, class A, class B, class C>
inline LPVOID pushargEx(A a1, B a2, C a3)
{
typedef LPVOID (WINAPI *newfunc)(A, B, C);
printf("3:h=%d,hash=%d\n",h,hash);
return 0;
}
int main(int argc, char* argv[])
{
pushargEx<1,00>("123");
pushargEx<10,01>("123");
pushargEx<2,10>("123","1223");
pushargEx<2,20>("123","1233");
pushargEx<3,30>("123","1234","1234");
pushargEx<3,40>("123","1253","1234");
return 0;
}
向各位高手请教。
理论执行结果是:
1:h=1,hash=0
1:h=10,hash=1
2:h=2,hash=10
2:h=2,hash=20
3:h=3,hash=30
3:h=3,hash=40
可是实际结果是:
1:h=10,hash=1
1:h=10,hash=1
2:h=2,hash=20
2:h=2,hash=20
3:h=3,hash=40
3:h=3,hash=40
[课程]Android-CTF解题方法汇总!