C에서 C#으로 변환 된 일부 코드를 검사하고 있습니다.C# 변환을위한 C 함수 이해
...
#define getblock(p, i) (p[i])
...
void MurmurHash3_x86_32 (const void * key, int len,
uint32_t seed, void * out)
{
const uint8_t * data = (const uint8_t*)key;
const int nblocks = len/4;
int i;
uint32_t h1 = seed;
uint32_t c1 = 0xcc9e2d51;
uint32_t c2 = 0x1b873593;
const uint32_t * blocks = (const uint32_t *)(data + nblocks*4);
for(i = -nblocks; i; i++)
{
uint32_t k1 = getblock(blocks,i);
...
부분 for(i = -nblocks; i; i++) ...
은이 거꾸로 데이터를 통해 반복 : 나는 원래 C에 대한 질문이? 데이터가 음의 색인으로 표시되는 것을 본 적이 없습니다.
왜 디버그하지 않거나 각 루프의 시작 부분에'i'를 인쇄하여 어떻게됩니까? 그 행동을 분명히해야합니다. – Servy
Visual Studio에서 C#으로 작성했습니다. 나는 소스가 GNU C.라고 믿는다. – IamIC
그래서 원래의 코드를 실행하는 데 아무런 의미가 없다? 당신이 재 작성을하고 있다면 나는 그것을 고치는 방법을 발견 할 것이다. 코드의 내용을 이해하는 데 도움이되도록 번역중인 코드 스 니펫을 실행할 수 있어야합니다. C 코드를 전혀 실행할 수 없다는 것이 여전히 나쁘고, 해결하기가 너무 어렵지 않아야합니다. – Servy