作者:装配脑袋

链接:https://www.zhihu.com/question/40929777/answer/90029159

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

地方就在不久之前,无论是VC6还是VS2015都不适合学习C语言,因为两者对C根本没有好好支持,都是针对C++的IDE。然而最近VS2015 Update 1新增了用clang作为前端的选项,它对C99有良好的支持,再加上VS方便的编辑调试体验,你终于可以享受了。

新建项目后,打开项目属性,然后在toolset中选取clang即可。

补充一下具体操作,首先你需要安装Visual Studio with Update 1,选择自定义安装,然后选中以下两项:

接下来我们只要在Visual C++的项目中即可使用clang的前端了。

实际上VC也支持大部分的C99特性,但是少数特性不支持。我们下面的例子中就有VC本身不支持的C99特性:

#include "stdio.h"

struct point

{

int x;

int y;

};

/* C99特性:restrict指针提示编译器该指针是访问所指目标的唯一方式 */

static inline void swap_int(int * restrict p1, int * restrict p2)

{

// 不要这样实现(C99特性://开头的注释)

*p1 = *p1 ^ *p2;

*p2 = *p1 ^ *p2;

*p1 = *p1 ^ *p2;

}

/* C99特性:static inline函数 */

static inline void swap_point(struct point * p1, struct point* p2)

{

swap_int(&p1->x, &p2->x);

swap_int(&p1->y, &p2->y);

}

int main()

{

struct point p =

{

.x = 2,

.y = 3

};

/* C99特性:复合型字面量 */

swap_point(&p,

&((struct point) { .x = -5, .y = 2 }));

printf("After swap, the point is (%d, %d)\n", p.x, p.y);

if (p.y <= 0) return 0;

/* C99特性:变长数组 */

int vla[p.y];

vla[p.y - 1] = 20;

printf("The length of vla is %d\n", sizeof(vla) / sizeof(int));

return 0;

}

保存为扩展名为.c的文件后,如果用VC来编译,会出现数个编译错误。这是因为restrict被VC用于C++ AMP特性了,并非C99当中的restrict指针。另外变长数组特性也是不支持的。现在我们只要打开项目属性,找到Platform Toolset这一选项,选为Clang前端+C2后端的组合:

再次编译该项目,就能完全编译通过,正确运行了!

学c语言用vs,毫无编程基础的小白准备学习C语言,用VC6还是VS2015?相关推荐

  1. 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  2. 0基础小白学python好学吗-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  3. 零基础的小白如何学习编程,该怎么入手学习?

    零基础的小白如何学习编程,该怎么入手学习?这是一个被问烂透而有很有趣的话题了.听到这个问题时,小编的第一反应就是要弄清楚对方为什么要学习编程,这是一个很好地起点,清楚自己想要什么,才能去努力实现. & ...

  4. c语言编程基础课件,第7章_C语言图形编程基础课件

    第7章_C语言图形编程基础课件 狭义的组织变革是指组织根据外部环境的变化和内部情况的变化及时地改变自己的内在组织结构,以适应客观发展的需要. 狭义的组织变革是指组织根据外部环境的变化和内部情况的变化及 ...

  5. arduino语言c,Arduino编程基础(二)——C\C++语言基础(上)

    基础篇 本章开始,将由浅入深,详细介绍开发Arduino Uno所需的基础知识与开发方法. Arduino语言 Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种 ...

  6. 不懂编程可以自学python吗-关于大学小白如何学习Python语言程序设计

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 一.问题阐述 对于刚刚进入大学小白的我们对许许多多课程感到陌生 ...

  7. c语言错误出在花括号上,初学者在学习c语言编程过程中常出现的错误分析

    在高校经常中开设的第一科关于程序设计的语言就是C语言,这种语言有很多优势,比如说使用比较灵活,功能比较强大,可以用于编写程序.软件,但是对于初学者来说, 1 0 8 应用方法论 22第霸 0赫 6乱 ...

  8. 赶上年底最后一趟末班车——Python编程基础之小白入门

    了解编程语言 正如人与人之间的沟通需要语言,人与计算机之间的沟通,也需要语言,连接人与计算机沟通的桥梁就是编程语言.任何编程语言只要用来开发程序,都怀揣着同一使命--"为人类干活" ...

  9. 谁说菜鸟不会数据分析python下载_刻意练习9:《谁说菜鸟不会数据分析python篇》第3章编程基础总计46页学习笔记...

    学习计划MyPlan9 主题:<谁说菜鸟不会数据分析python篇>第3章节 编程基础,总计46页. 时间:7.15-7.21 周内完成 各位星友们,在这个星球里每个人都要逼迫自己学习未知 ...

最新文章

  1. GNU/Linux平台上正则表达式的简单使用
  2. web中的各种打印方案
  3. P5887-Ringed Genesis【GCD】
  4. python多分支结构实例_JS优化多分支结构(经典)
  5. 大公司体制内创新的困境
  6. 黑金Xilinx FPGA学习笔记(一)verilogHDL扫盲文-(1)
  7. 超声波传感器测距报警器
  8. java:一个求面积、体积小程序
  9. matlab神经网络 股票预测模型,如何用MATLAB的BP神经网络做股票预测
  10. element手机验证格式_ElementUI验证手机号
  11. 云信api_云信Web SDK API文档
  12. 虎年降至.一款2022虎年为主的一款头像制作小程序源码。
  13. Android 应用快捷方式 Shortcuts(二)
  14. (设计模式)Adaptor、Decorator与Facade模式
  15. Java Statement一次执行多条sql语句
  16. 免费c语言程序设计题库app,2020知到APPC语言程序设计(青岛职业技术学院)答案搜题公众号...
  17. 计算机408王道考研资料、笔记分享 ~ ~
  18. 【转】delphi 修改代码补全的快捷键(由Ctrl+Space 改为 Ctrl + alt + Space)
  19. 推特开发者账号 elevated academic学术权限申请
  20. Centos 7安装步骤

热门文章

  1. 5、MySQL通用查询日志(General Query Log)
  2. 百度和360的关键词提交查询
  3. C/C++将十进制数转为二进制并输出
  4. C语言希尔排序(解析)
  5. 使用HTML完成简历
  6. html页面显示html代码怎么写,求助这段代码如何转换成正常可看的HTML页面
  7. python开发跟淘宝有关联微_使用Python分析淘宝用户行为
  8. Java 中的 Switch 都支持 String 了,为什么不支持 long?
  9. 遇到问题:push的时候出现fatal: Authentication failed for
  10. Java提升篇——equals()方法和“==”运算符