none
在编译C程序时发生错误是怎么回事? RRS feed

  • 问题

  • #include <stdio.h>
    int main(void)
    {
    	int num,a,b,c,d,e;
    	char ch1,ch2;
    	printf("请打印一个字母金字塔的图形。\n");
    	printf("在这之前请输入一个数字以确定要打印一个多少行的字母金字塔。\n");
    	scanf("%d",&num);
    	printf("\n");
    	while(0<num&&num<27)
    	{
    	for(a=1;a<=num;a++)
    	{
    		ch1='a';
            e=2;
    		for(b=a;b<num;b++)
    			printf(" ");
    		for(c=a;c>0;c--)
    		{
    			printf("%c",ch1);
    			ch1++;
    		}
    		for(d=a-1;d>0;d--)
    		{
    			ch2=ch1-e;
    			printf("%c",ch2);
    			ch2--;
    		    e++;
    		}
    		printf("\n");
    	}
        printf("\n");
    	printf("请输入另外一个整数。\n");
    	scanf("%d",&num);
    	}
    	return 0;
    }

    d:\我的文件\c及c++临时文件\字母金字塔\字母金字塔\字母金字塔.c : fatal error C1853: “Debug\字母金字塔.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
    2014年9月1日 0:36

答案

  • 你好,

    请问你是用哪个版本的visual studio 编译程序的?这个程序创建的时候是用什么早期版本?

    根据你的错误,应该是这个程序是基于早期版本产生的,当你用新版本编译该程序的时候出了问题。同时你应该注意如何在visual studio 中编译C 程序。最好建一个空的工程,添加你的C源文件进来,确保你的文件后缀名为.c 而不是.cpp。其次将编译选项设置为 compile as C code/TC。同时去掉预编译头文件的设置内容。

    当我在VS2013中运行该C代码的时候,提示scanf 不安全,所以我通过添加如下代码来抑制那个提示。

    #define _CRT_SECURE_NO_WARNINGS

    同时还有一些warning 提示printf的打印内容在当前页面编码下无法显示,针对这个问题,你可以参考这个链接中的解决方案:

    Why doesn't printf format unicode parameters?

    1>c:\users\v-mawang\documents\visual studio 2013\project\testc2\source.c(14): warning C4566: character represented by universal-character-name '\u8BF7' cannot be represented in the current code page (1252)


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2014年9月1日 8:26