学c语言用vs,毫无编程基础的小白准备学习C语言,用VC6还是VS2015?
作者:裝配腦袋
鏈接:https://www.zhihu.com/question/40929777/answer/90029159
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
地方就在不久之前,無論是VC6還是VS2015都不適合學(xué)習(xí)C語言,因?yàn)閮烧邔根本沒有好好支持,都是針對C++的IDE。然而最近VS2015 Update 1新增了用clang作為前端的選項(xiàng),它對C99有良好的支持,再加上VS方便的編輯調(diào)試體驗(yàn),你終于可以享受了。
新建項(xiàng)目后,打開項(xiàng)目屬性,然后在toolset中選取clang即可。
補(bǔ)充一下具體操作,首先你需要安裝Visual Studio with Update 1,選擇自定義安裝,然后選中以下兩項(xiàng):
和
接下來我們只要在Visual C++的項(xiàng)目中即可使用clang的前端了。
實(shí)際上VC也支持大部分的C99特性,但是少數(shù)特性不支持。我們下面的例子中就有VC本身不支持的C99特性:
#include "stdio.h"
struct point
{
int x;
int y;
};
/* C99特性:restrict指針提示編譯器該指針是訪問所指目標(biāo)的唯一方式 */
static inline void swap_int(int * restrict p1, int * restrict p2)
{
// 不要這樣實(shí)現(xiàn)(C99特性://開頭的注釋)
*p1 = *p1 ^ *p2;
*p2 = *p1 ^ *p2;
*p1 = *p1 ^ *p2;
}
/* C99特性:static inline函數(shù) */
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特性:復(fù)合型字面量 */
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特性:變長數(shù)組 */
int vla[p.y];
vla[p.y - 1] = 20;
printf("The length of vla is %d\n", sizeof(vla) / sizeof(int));
return 0;
}
保存為擴(kuò)展名為.c的文件后,如果用VC來編譯,會出現(xiàn)數(shù)個編譯錯誤。這是因?yàn)閞estrict被VC用于C++ AMP特性了,并非C99當(dāng)中的restrict指針。另外變長數(shù)組特性也是不支持的?,F(xiàn)在我們只要打開項(xiàng)目屬性,找到Platform Toolset這一選項(xiàng),選為Clang前端+C2后端的組合:
再次編譯該項(xiàng)目,就能完全編譯通過,正確運(yùn)行了!
總結(jié)
以上是生活随笔為你收集整理的学c语言用vs,毫无编程基础的小白准备学习C语言,用VC6还是VS2015?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言0xc0000142错误,第一次用
- 下一篇: joseph c语言,C语言指针-C语言