C 编程环境搭建 Window 篇
前言 - 简介
我们在写代码的过程中, 不可避免的重度依赖所处的开发环境. 本文重点带大家在 Window 搭建 C
简单控制台项目. 当作存档, 用于记录项目搭建各种重复操作. 在详细过程之前, 我们约定下基础环境
Best new version Window
Best new version Visual Studio
例如笔者当前是 Windows 10 + Visual Studio 2019, 其中 Windows 推荐开启 UTF-8 支持.

那此间, 骚年去唤醒自己的道 ~
正文 - 过程
正文分三个过程. 其一是 Visual Studio C Consule 常用设置. 其二是导出模板, 来解放生产力. 其三演示使用.
Visual Studio C Consule 常用设置
1. 创建 c_template 项目

2. 只保留 x64 环境

人的精气有限, 做钉子更省力.
3. 添加基础 main.c

4. Visual Studio 项目详细配置
导出模板
上面这些每次操作都添加, 很恶心. 我们可以通过 [项目] -> [导出模板] 一劳永逸. ~
1. 前戏
找到 c_template.vcxproj 项目文件, 通过你的慧眼, 将其中所有关于 Win32 相关的 xml 配置删除.
2. 导出模板
[项目] -> [导出模板]

添加额外补充

(图片什么的可以因自己喜好自己整)
演示使用

最终生成如下模板内容

不妨既兴通过这个模板演示一段代码
#include <stdio.h>
#include <float.h>
#include <errno.h>
#include <assert.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h> /*
题目:
地上右一个 m 行 n 列的方格.
一个机器人从坐标(0, 0) 的格子开始移动, 它每次可以向左, 右, 上, 下移动一格,
但不能进入行坐标和列坐标的数位之和大于 k 的格子. 例如, 当 k 为 18 的时候,
机器人能够进入方格 (35, 37), 因为 3 + 5 + 3 + 7 = 18.
但它不能进入方格 (35, 38), 因为 3 + 5 + 3 + 9 = 19.
请问该机器人能够到达多少个格子?
*/ extern int moving_count(int m, int n, int threshold); int main(int argc, char * argv[]) {
int m = , n = , threshold = ;
int count = moving_count(m, n, threshold);
printf("<m = %d, n = %d, threshold = %d> -> %d\n", m, n, threshold, count);
return ;
} struct visite {
int rows;
int cols;
int threshold;
bool visited[];
}; inline struct visite * visite_create(int rows, int cols, int threshold) {
struct visite * v = malloc(sizeof(struct visite) + (rows * cols) * sizeof (int));
assert(v && rows > && cols > && threshold > );
v->rows = rows;
v->cols = cols;
v->threshold = threshold;
memset(v->visited, , (rows * cols) * sizeof (int));
return v;
} inline void visite_delete(struct visite * v) {
if (v) free(v);
} static inline int get_digit_sum(int num) {
int sum = ;
while (num > ) {
sum = num % ;
num /= ;
}
return sum;
} inline bool visite_check(struct visite * v, int row, int col) {
if (row >= && row < v->rows && col >= && col < v->cols && !v->visited[row * v->cols + col]) {
return get_digit_sum(row) + get_digit_sum(col) <= v->threshold;
}
return false;
} int visite_moving(struct visite * v, int row, int col) {
if (!visite_check(v, row, col))
return ; v->visited[row * v->cols + col] = true;
return + visite_moving(v, row, col - )
+ visite_moving(v, row, col + )
+ visite_moving(v, row - , col)
+ visite_moving(v, row + , col);
} int
moving_count(int m, int n, int threshold) {
if (m < || n < || threshold < )
return ;
if (threshold == )
return ; struct visite * v = visite_create(m, n, threshold); int count = visite_moving(v, , ); visite_delete(v); return count;
}
(有心的道友, 也可以转成栈回溯. )
后记 - 展望
错误是难免的, 欢迎朋友指正互相印证苦中作乐.
立秋 - 刘翰 - 南宋
乳鸦啼散玉屏空,一枕新凉一扇风。
睡起秋声无觅处,满阶梧桐月明中。
C 编程环境搭建 Window 篇的更多相关文章
- Qt在Windows下的三种编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...
- Qt4.8在Windows下的三种编程环境搭建
Qt4.8在Windows下的三种编程环境搭建 Qt的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了X系统的各种Linux和Unix ...
- 手把手制作一个简单的IDEA插件(环境搭建Demo篇)
新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...
- ArduinoYun教程之Arduino编程环境搭建
ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO.Arduino ...
- Qt在Windows下的三种编程环境搭建(图文并茂,非常清楚)good
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...
- 【Qt开发】Qt在Windows下的三种编程环境搭建
从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.htm ...
- C++调用Lua编程环境搭建及测试代码示例
C++调用Lua编程环境搭建及测试代码示例 摘要:测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7 1.安装lua开发环境LuaForWindows_v5.1. ...
- Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)
此配置实例亲测成功,共勉,有问题大家留言. 环境:VMware 10 + unbuntu 14.04 为了unix进行网络编程,编程第一个unix程序时遇到的问题,不能包含unp.h文件,这个感觉和a ...
- Qt在Mac OS X下的编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
随机推荐
- EF自动创建数据库步骤之四(启用数据库初始器)
在创建完DBIfNotExistsInitializer数据库初始化器类后,需要在程序每一次访问数据库前,告诉EF使用该初始化器进行初始化. 代码如下 : Database.SetInitialize ...
- MySql定时备份脚本
最近需要对某服务的数据库数据进行备份,因此参考网上教程完成数据库备份脚本. 因为服务的使用频率较低,因此设置定时任务,在每天的中午以及午夜时分进行备份操作. #!/bin/bash # 设置mysql ...
- RMAN笔记
Rman常用命令 Preview选项 1) 显示用于还原system表空间数据文件的备份文件 RMAN> restore datafile 2 preview; 2) 显示用于还原特 ...
- 【学习笔记】PYTHON网络爬虫与信息提取(北理工 嵩天)
学习目的:掌握定向网络数据爬取和网页解析的基本能力the Website is the API- 1 python ide 文本ide:IDLE,Sublime Text集成ide:Pychar ...
- mysql中的where和having的区别
下面以一个例子来具体的讲解: 1. where和having都可以使用的场景 1)select addtime,name from dw_users where addtime> 1500000 ...
- frameset frame 页面空白
<html style="background:#213039;"> <head> <title>网站后台管理中心</title> ...
- Nginx 高级配置-第三方模块编译
Nginx 高级配置-第三方模块编译 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 第三模块是对nginx 的功能扩展,第三方模块需要在编译安装Nginx 的时候使用参数--add ...
- AtCoder - 4496 G - k-DMC
AtCoder - 4496 G - k-DMC 题目 长度为n的字符串,q次查询,问"DMC"(不要求连续)在字符串中出现的次数,其中D和M的距离不超过k. 错误思路 通过遍历字 ...
- Fluter基础巩固之Dart语言详解<三>
继续Dart语言的学习,这次过后下次就进入全新的Flutter的学习了,小小的激动.. 操作符重载: C++中也有,咱们来看一下在Dart中是如何来实现的: 比较简单. 异步[重要!]: async和 ...
- LengthFieldBasedFrameDecoder
LengthFieldBasedFrameDecoder 详解 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -31[ 博客园 总入口 ] 文章目录 LengthFieldBasedFr ...