C++调试过程遇到---各种Bug

1、Run-Time   Check   Failure   #2  

    问题分析:Run-Time   Check   Failure   #2  
    一般是栈或者堆被破坏,代码可能有缓冲区溢出一类的问题。

    具体分析:本段程序实现控制台颜色的调整,申请栈区Stack 的 yanse[8],不够,数组越界。如下:

    

    char bg[10] ;
    char fg[10] ;
    char yanse[8] = "color ";//此处的问题 ,下面需要存储bg 和 fg 至少9个
    puts("0 = 黑色 1 = 蓝色 2 = 绿色 3 = 湖蓝色 4 = 红色 5 = 紫色 6 = 黄色 7 = 白色 8 = 灰色");
    puts("9 = 淡蓝色 A = 淡绿色 B = 淡浅绿色 C = 淡红色 D = 淡紫色 E = 淡黄色 F = 亮白色");
    printf("\n请按照您的喜好和心情b( ̄▽ ̄)d选择背景颜色: ");
    //===================================================
    scanf(" %s", bg);
    puts("0 = 黑色 1 = 蓝色 2 = 绿色 3 = 湖蓝色 4 = 红色 5 = 紫色 6 = 黄色 7 = 白色 8 = 灰色");
    puts("9 = 淡蓝色 A = 淡绿色 B = 淡浅绿色 C = 淡红色 D = 淡紫色 E = 淡黄色 F = 亮白色");
    printf("\n请按照您的喜好和心情b( ̄▽ ̄)d选择前景颜色: ");
    scanf("%s", fg);
    system(strcat(strcat(yanse, bg), fg));//此部分strcat是将后面的字符合并到yanse字符后面并存储在yanse数组,
//不要忘了也需要一个回车符的空间

 2、错误 2 error LNK1169: 找到一个或多个多重定义的符号

           fatal error LNK1169: 找到一个或多个多重定义的符号

      问题分析:多种可能{1]inclued 多层嵌套导致---需ifndef ;

                                            2]申明全局变量,全局函数一定要在cpp中申明,其他类引用该全局变量就include该cpp的h文件,然后                                                       extern一下就好了。否则容易出现该重复定义错误。}

                                                 理解:例如 A.h 中如果申明了全局变量   int Global;

                                                                 在 B.h 中存在:include "A.h"

                                            .....
                                            extern int Global;
                                            ......
则B中 include A.h 相当于把 A.h 中全局变量的申明也 include 进来了,编译器就会认为是重复定义
所以全局变量和函数申明一定要在cpp中 ,当 .h 文件里有函数实现时,VS编译器报此错误。
----------------------------------------------------------------------------------------

      解决方案:

             1>推荐方案:项目->属性->链接器->命令行->附加选项中加  /force 

             2>                     针对2]已说明很好,举个例子:

                       

 

             上图中,结构体定义放在Stu_CW.h或者Stu_CW.cpp中都没问题,问题在于结构体定义的全局变量 SUser g_user[10000];

              必须放在Stu_CW.cpp来申请全局结构体变量,否则出错。

 

 

posted @ 2017-08-05 12:28  心沉大海-汇聚成一  阅读(490)  评论(0)    收藏  举报