Visual Studio生成并调试不带main()的.cpp文件 教授刚刚给了我们一块C++代码,以了解VisualStudio中的调试窗口,但是在创建空白Win32控制台项目后,然后在.CPP文件中拖动时,当调试时,得到了EXE.EXE错误消息。我到处都找过了,没有人能完全回答这个问题,我想这一定是代码的问题 // Test1.cpp : main project file. #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace System; int accum = 0; int sum (int x, int y) { int t = x + y; accum += t; return t; } int calc (int op1, int op2, int opcode) { __asm { mov ebx, opcode; test ebx, 0x01; jz sub_2; mov eax, op1; add eax, op2; jmp done; sub_2: test ebx, 0x02; jz mul_3; mov eax, op1; sub eax, op2; jmp done; mul_3: done: } } int main() { int j = -2; int i = 0; int k = 0; float f = 0.0; char ch; int int_array[5]; struct customer { char name[20]; short age; int flag; }; struct customer c[10]; ch = 'A'; ch |= 0x20; i = j * 10 / 5; if (i != 0) goto cont; j = i / 0; cont: i = sum ( j, -123 ); printf("decimal = %d, hex = 0x%4x\n", i, i); for (i = 0; i < 5; i++) int_array[i] = i + 100; switch (i) { case 100: k = k / i; break; case 200: k = k % i; break; case 300: case 400: k += 256; break; default: f = 1.0; } printf("f = %f\n", f); strcpy(c[3].name,"Larry King"); c[3].age = 65; c[3].flag = 10; c[3].flag = c[3].flag << 5; strcpy(c[3].name,"Larry King "); k = calc(i, j, 1); k = calc(i, j, 2); return 0; } //Test1.cpp:主项目文件。 #包括“stdafx.h” #包括 #包括 #包括 使用名称空间系统; int accum=0; 整数和(整数x,整数y) { int t=x+y; 累计+=t; 返回t; } 内部计算(内部操作1、内部操作2、内部操作代码) { __asm { mov ebx,操作码; 测试ebx,0x01; jz sub_2; mov-eax,op1; 添加eax,op2; jmp完成; 第2分节: 测试ebx,0x02; jz mul_3; mov-eax,op1; 副eax,op2; jmp完成; mul_3: 完成: } } int main() { int j=-2; int i=0; int k=0; 浮动f=0.0; char ch; int_数组[5]; 结构客户 { 字符名[20]; 年龄短; int标志; }; 结构客户c[10]; ch='A'; ch |=0x20; i=j*10/5; 如果(i!=0) 转到cont; j=i/0; 续: i=总和(j,-123); printf(“十进制=%d,十六进制=0x%4x\n”,i,i); 对于(i=0;i

Visual Studio生成并调试不带main()的.cpp文件 教授刚刚给了我们一块C++代码,以了解VisualStudio中的调试窗口,但是在创建空白Win32控制台项目后,然后在.CPP文件中拖动时,当调试时,得到了EXE.EXE错误消息。我到处都找过了,没有人能完全回答这个问题,我想这一定是代码的问题 // Test1.cpp : main project file. #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace System; int accum = 0; int sum (int x, int y) { int t = x + y; accum += t; return t; } int calc (int op1, int op2, int opcode) { __asm { mov ebx, opcode; test ebx, 0x01; jz sub_2; mov eax, op1; add eax, op2; jmp done; sub_2: test ebx, 0x02; jz mul_3; mov eax, op1; sub eax, op2; jmp done; mul_3: done: } } int main() { int j = -2; int i = 0; int k = 0; float f = 0.0; char ch; int int_array[5]; struct customer { char name[20]; short age; int flag; }; struct customer c[10]; ch = 'A'; ch |= 0x20; i = j * 10 / 5; if (i != 0) goto cont; j = i / 0; cont: i = sum ( j, -123 ); printf("decimal = %d, hex = 0x%4x\n", i, i); for (i = 0; i < 5; i++) int_array[i] = i + 100; switch (i) { case 100: k = k / i; break; case 200: k = k % i; break; case 300: case 400: k += 256; break; default: f = 1.0; } printf("f = %f\n", f); strcpy(c[3].name,"Larry King"); c[3].age = 65; c[3].flag = 10; c[3].flag = c[3].flag << 5; strcpy(c[3].name,"Larry King "); k = calc(i, j, 1); k = calc(i, j, 2); return 0; } //Test1.cpp:主项目文件。 #包括“stdafx.h” #包括 #包括 #包括 使用名称空间系统; int accum=0; 整数和(整数x,整数y) { int t=x+y; 累计+=t; 返回t; } 内部计算(内部操作1、内部操作2、内部操作代码) { __asm { mov ebx,操作码; 测试ebx,0x01; jz sub_2; mov-eax,op1; 添加eax,op2; jmp完成; 第2分节: 测试ebx,0x02; jz mul_3; mov-eax,op1; 副eax,op2; jmp完成; mul_3: 完成: } } int main() { int j=-2; int i=0; int k=0; 浮动f=0.0; char ch; int_数组[5]; 结构客户 { 字符名[20]; 年龄短; int标志; }; 结构客户c[10]; ch='A'; ch |=0x20; i=j*10/5; 如果(i!=0) 转到cont; j=i/0; 续: i=总和(j,-123); printf(“十进制=%d,十六进制=0x%4x\n”,i,i); 对于(i=0;i,c++,assembly,visual-studio-2013,C++,Assembly,Visual Studio 2013,控制台程序必须有一个main。您的代码确实有一个main函数,这是它工作所必需的 正如您所说,调试器返回了一个“缺少可执行文件”错误,我假设您没有编译代码,或者如果是这样,则在输出和错误窗口中可以找到一些错误 如果您使用单个源文件处理一个空白项目,我认为不需要使用预编译的头文件(它可能会丢失,从而导致错误) 我建议您重新生成代码并重试。如果错误仍然存在,请告诉我们输出窗口的内容。您将文件拖到了哪里?如果您只是将其拖到编辑窗口中,它将不会添加到项目中,因此不会被编译。您可能需要将其拖到“解决方案资

控制台程序必须有一个main。

您的代码确实有一个main函数,这是它工作所必需的

正如您所说,调试器返回了一个“缺少可执行文件”错误,我假设您没有编译代码,或者如果是这样,则在输出和错误窗口中可以找到一些错误

如果您使用单个源文件处理一个空白项目,我认为不需要使用预编译的头文件(它可能会丢失,从而导致错误)


我建议您重新生成代码并重试。如果错误仍然存在,请告诉我们输出窗口的内容。

您将文件拖到了哪里?如果您只是将其拖到编辑窗口中,它将不会添加到项目中,因此不会被编译。您可能需要将其拖到“解决方案资源管理器”中的源文件中在我删除
#include stdafx.h
后,它在控制台项目中为我编译和运行。Ninja,它编译和运行(除了strcpy警告)。当我尝试调试时,问题出现了,它说它丢失了文件,并且收到了strcpy的警告,所以我用strcpy_s替换了这两个strcpy,显然这就是问题所在。更大的问题是,我们不允许修改Professor代码,他正在运行并调试它,没有任何修改。无论如何,谢谢你的帮助这让我更仔细地查看了错误输出。这听起来像是您实际遇到了错误,而不是对strcpy发出警告。这是一个项目设置,您可以在不需要更改代码的情况下进行更改。错误消息通常非常清楚如何修复它。