记第一次用VS2017遇到的错误

本文详细解析了C++编程中常见的三个错误:使用int作为函数名、数组大小非常量及未定义入口点,并提供了相应的修正方法,如正确使用括号、采用堆内存分配及确保函数名为main。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.意外的类型 int(int不允许使用类型名)

犯了一个有一点傻的错误。在编辑主函数的打成了

int main{
   int n;//这里的int和n都报错了
}

提示error C3861: “n”: 找不到标识符还有int 不允许使用类型名

解决办法:应该把上面的代码改成(加一个括号):

int main (){
	int n;
}

注:这个地方是百度到的…没想到还有人会和我犯一样的错误,刚看到的时候我还觉得怎么可能是这个原因,也太傻逼了吧…回去一看,真的没加(??)。真是他妈峰回路转柳暗花明傻逼皮皮猪呜呜呜

2.数组表达式必须含有常量值

int main()
{
   int n(0) ,i; 
   cin >> n;
  int a[n];//这里提示了错误
  //中间省略其他代码
  return 0;
}

解决办法1:定义数组时,里面不应该是个变量,不能用这种方式输入,应该定义成常量(可能会浪费一点空间)。

int main()
{
   int n(0) ,i; 
   cin >> n;
   treenode *bst=new treenode;
  int a[10];
//中间省略其他代码
  return 0;
}

解决办法2:改成堆内存分配(可以动态分配数组,而且里面可以是变量)
形式:指针=new 数据类型[元素个数]
注意:!最后要记得delete []n;

int main()
{
   int n(0) ,i;
   int *a;
   cin >> n;
   a=new int[n];
//中间省略其他代码
  delete []a
  return 0;
}

3.必须定义入口点

这个错误真的很蠢

int mian() {
	int m;
	for (m = 11; m < 1000; m++) {
		if (symm(m) && symm(m*m) && symm(m*m*m)) {
			cout << "m=" << m << "m*m=" << m * m << "m*m*m" << m * m*m << endl;
		}
	}
	return 0;
}

提示:LINK : fatal error LNK1561: 必须定义入口点
解决办法:把mian()改成main()

### UPX脱壳方法概述 UPX是一种广泛使用的开源压缩程序外壳,用于减少可执行文件的大小。然而,在某些情况下可能需要对其进行脱壳操作以恢复原始文件的内容。以下是几种常见的UPX脱壳方法及其具体实施方式。 #### 方法一:使用`UPX Unpacker for Dummies` 一种简便的方法是借助专门设计的工具——`UPX Unpacker for Dummies`来进行自动化脱壳操作。此工具能够简化复杂的脱壳流程,使得即使是初学者也能轻松完成任务[^1]。 #### 方法二:手动脱壳 如果希望更深入理解整个过程,则可以选择手工方式进行脱壳。这通常涉及以下几个方面的工作: - **准备环境** 首先确保已安装最新版本的UPX工具,并熟悉其基本命令结构。 - **实际操作步骤** - 打开命令行界面并导航至存储目标文件以及UPX应用程序所在的目录; - 输入指定格式的命令字符串:“upx.exe -d [待处理文件路径]”,其中参数 `-d` 表明要对该文件执行反向解压动作即所谓的‘脱壳’行为;需要注意的是各部分之间需保留适当空白间隔以便正确定义功能调用关系[^3]。 #### 方法三:利用LyScript插件自动实现 对于那些追求效率或者频繁从事此类工作的专业人士来说,采用集成开发环境中支持扩展特性的脚本语言可能是更好的解决方案之一。例如基于Python编写的第三方库 `LyScript` 提供了一系列针对逆向工程领域特别优化的功能模块,其中包括但限于快速定位入口点、动态跟踪函数跳转逻辑图谱绘制等等实用特性。通过这些高级别的抽象层封装好的API接口可以直接调用底层操作系统服务从而绕过传统意义上的加壳保护机制达到相同目的的同时还大大降低了人为错误发生的概率提升了整体工作效率[^2]。 ```python import lyscript as ls def unpack_upx(file_path): process = ls.Process() if not process.attach_by_name(file_path): print("Failed to attach the target process.") return False memory_dump = process.dump_memory_regions() with open('output.bin', 'wb') as f: f.write(memory_dump) process.detach() return True ``` 上述代码片段展示了一个简单的例子说明如何使用 LyScript 来捕获运行时加载到内存中的数据流进而保存下来作为最终输出结果替代原本被加密隐藏起来的真实PE头部信息等内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值