#Windows环境下运行c程序,并且向mian函数传递参数

一般来说,我们大多数写的c程序中,main函数是没有参数的,因为它是主函数,一般不会调用它。
但是通过命令行执行c程序时,可以向main函数传递参数,具体步骤如下:

1.安装gcc解释器,在官网下载好gcc后,还要配置环境变量。找到安装的gcc路径:xxx\xx\MinGW\bin,把它添加至环境变量中的系统变量中的:Path当中。
2.打开cmd,进入编写好的c语言程序目录,利用gcc进行编译:gcc code_name.c
3.如果已经编译好,那么在程序目录下会有一个相应的可执行文件:.exe,输入:code_name.exe即可执行c程序。
4.如果想向main函数传递参数,那么在后面加上参数列即可,每个参数之间用空格隔开:code_name.exe arg1 arg2 arg3…
/******************************************************/
相应的c程序中main函数的参数列表如下:

int main(int argc,char *argv[])

其中第一个参数代表传过来的参数个数+1(程序名在大多数编译器中算是第一个参数),第二个参数是传过来的不定参数列表。其中argv[0]存放的是程序名(code_name);
如果传过来的是数字,想用数据的话,必须将数字字符串转换为数字,常用的函数有:atoi(),atof(),
strtol(char* source_String,char** end_char,int base)[将字符串转换为long类型;
@@@点个赞呗!

### C++ 中解决 `undefined reference to 'WinMain@16'` 的方法 #### 错误原因分析 该错误通常发生在 Windows 系统上,表示链接器无法找到程序的入口点函数。Windows 应用程序的标准入口点是 `WinMain` 而不是标准控制台应用程序中的 `main` 函数[^1]。如果编译器期望的是 `WinMain`,而实际代码中提供了 `main` 或者其他形式的入口函数,则会触发此错误。 此外,这种错误也可能由以下几种情况引起: - 文件未被正确保存,导致编译器读取到的内容为空或不完整[^2]。 - 配置问题:某些 IDE(如 VSCode)可能默认配置为构建 GUI 应用程序而非控制台应用[^5]。 - 编辑过程中拼写错误,例如将 `int main()` 写成 `int mian()`。 --- #### 解决方案 ##### 方法一:确认并修正入口函数名称 确保源代码中有正确的入口函数声明。对于普通的控制台程序,应该使用如下格式: ```cpp #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } ``` 注意不要拼写错误或将 `main` 改为其他名字。 --- ##### 方法二:保存文件后再尝试编译 在一些编辑器(如 VSCode)中,默认情况下自动保存功能可能是关闭状态。如果没有手动保存修改后的文件就直接运行程序,可能会导致编译器看到的是旧版本甚至空白文件,从而引发此类错误。因此,请先按 **Ctrl+S** 手动保存当前文档,然后再重新执行编译命令。 --- ##### 方法三:调整项目设置以匹配目标平台 如果你正在使用的开发环境预设为目标创建图形界面的应用程序而不是简单的终端脚本,那么它会寻找特定于窗口系统的启动例程——即 `WinMain` 而非通用型别的 `main` 。可以通过更改项目的属性来指定生成类型为 Console Application 来纠正这个问题: - 如果是在 Visual Studio 上工作的话,可以右键点击解决方案资源管理器里的工程名 -> 属性(Property),导航至 Linker->System 下面把 SubSystem 设置改为 /SUBSYSTEM:CONSOLE 即可; - 对于基于 Makefile 构建工具链的情况来说,则需保证最终传递给链接阶段的相关选项里包含了 `-mconsole` 参数(如果是 MinGW 工具集下)[^3]. --- ##### 方法四:检查是否有多个同名文件冲突 有时候同一个目录可能存在多份相同命名但扩展不同的源码副本 (比如既有 .c 又有对应的 .cpp ) ,这会造成编译过程混乱进而报类似的错。所以建议清理不必要的冗余备份再试试看效果如何 [^4]. --- ### 示例代码验证 下面给出一段完整的测试代码用于演示上述理论的实际运用场景: ```cpp // Example of a correct console application entry point. #include <iostream> using namespace std; class Time { public: void set_time() { cout << "Setting time..." << endl; } void show_time() const { cout << "Time is now displayed." << endl; } }; int main() { Time t; t.set_time(); t.show_time(); return 0; } ``` 以上例子展示了如何正确定义类以及调用成员函数的同时保持整个结构简单明了易于理解,并且其核心部分正是那个不可或缺的 `main` 函数作为一切动作发起的地方 . ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值