gpt4 book ai didi

c++ - 编译时重复语法错误

转载 作者:行者123 更新时间:2023-11-28 08:22:25 25 4
gpt4 key购买 nike

在我的项目中,我需要确定 CPU 支持的 SIMD 指令集。问题是,当我尝试进行测试编译时,出现了一系列重复多次的错误,就像编译器多次解析代码一样。确定受支持的 SIMD 指令的原因是因为我正在尝试调整 John the Ripper 的 DES 位片实现以用于 Windows 和 Linux 的 GPGPU(特别是 CUDA)。

所以,我的错误发生在第 37 行

// File Name: Arch.h
// Purpose: Determine CPU architecture (x86 or x86-64) and to determine instruction set supported by
// the CPU (MMX, SSE2 or neither)
//
// Authors: Daniel Beard and Michael Campbell

//If CPU is x86-64 then use x86-64 include
#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64)
#include "x86-64.h"
#endif

//Determine if CPU architecture is 32-bit, then determine which compiler is being used, finally determine if GCC (GNUC) or MS Visual C++ compiler is being used
#if defined(i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(_M_IX86)
#if defined(__GNUC__)
#define cpuid(func,ax,bx,cx,dx)\
__asm__ __volatile__ ("cpuid":\
"=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (func));
int a,b,c,d;
cpuid(0x1,a,b,c,d);
if ((d & 0x17)== 1)
{
#include "x86-mmx.h"
}
else if (d & 0x1A) == 1)
{
#include "x86-sse.h"
}
else if((d & 0x17) != 1 || (d & 0x1A) != 1)
{
#include "x86-any.h"
}
#endif

#if defined(_MSC_VER)
#include<intrin.h>
int CPUInfo[4] = {0};
__cpuid( CPUInfo, 1 );
if( (CPUInfo[3] & 0x1A) == 1 )
{
#include "x86-sse.h"
}
else if( (CPUInfo[3] & 0x17) == 1 )
{
#include "x86-mmx.h"
}
else if( (CPUInfo[3] & 0x17) != 1 || (CPUInfo[3] & 0x1A) != 1 )
{
#include "x86-any.h"
}
#endif
#endif

这是我得到的错误(有 86 个错误,但它们一直重复相同系列的错误/行号):

Error   1   error C2059: syntax error : ','                    line 37  
Error 2 error C2143: syntax error : missing ')' before 'constant' line 37
Error 3 error C2143: syntax error : missing '{' before 'constant' line 37
Error 4 error C2059: syntax error : '<Unknown>' line 37
Error 5 error C2059: syntax error : ')' line 37
Error 6 error C2059: syntax error : 'if' line 38
Error 7 error C2059: syntax error : 'else' line 42
Error 8 error C2059: syntax error : 'else' line 46
Error 9 error C2374: 'CPUInfo' : redefinition; multiple initialization line 36

最佳答案

您的 第一个 错误在第 36 行 - 声明 CPUInfo 已经存在 - 先修复它,其余的可能会消失。

在 visual studio 选项中,转到“Projects And Solutions”、“General”并取消选中“Always show Error List ...”

这将为您留下输出窗口 - 您可以使用 F8 导航到您通常应该关心的第一个警告/错误。

关于c++ - 编译时重复语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com