‘壹’ C语言编好的程序一闪而过,怎么不一闪而过
问题在于你没有添加断点
解决方法
1:如果在return 0 前添加断点就能解决
2:写入system("pause");暂停命令
3:代码末尾写入getchar(); 此为输入命令,输入任意字符即可结束程序
以上三种方法均可解决程序一闪而过
4:getch()
使用很简单,也是加载主函数的尾部,但其需要配合conin.h头文件使用才行!
即
‘贰’ 为什么电脑第一次C语言编译运行会卡顿
C语言用的是什么版本的编译器。
一般来说高版本的编译器比低版本的要慢很多。
就拿VS2010 和 很老的VC6来说,
VS2010只是运行,就需要加载N个G的初始化东西,而VC6精简版安装包只有25M左右,
类比吃饭:VS2010在吃饭前先要焚香祷告,然后再三跪九叩谢天谢地谢父母之后才吃, 所以他很慢。vc6则是直接拿起筷子就吃,速度快慢不言而喻
‘叁’ ARM STM32 C语言编程问题,不能正常启动,不能加载完系统信息页面,Jlink仿真死机
1 是否堆栈溢出
2 是否数组过界
3 是否有未初始化的指针
4 访问了非法地址。
这个比较重要:
Jlink仿真运行到与NOR闪存有关的语句就会死机。请问是否在代码中对flash地址进行了访问?
检查下指针吧,很可能是对flash进行改写了。
‘肆’ C语言中内存分布及程序运行加载过程
一个程序内存分配:
下图是APUE中的一个典型C内存空间分布图(虚拟内存)
例如:
int g1=0, g2=0, g3=0;
int max(int i)
{
int m1=0,m2,m3=0, p_max;
static n1_max=0,n2_max,n3_max=0;
p_max = (int )malloc(10);
printf("打印max程序地址
");
printf("in max: 0xx
",max);
printf("打印max传入参数地址
");
printf("in max: 0xx
",&i);
printf("打印max函数中静态变量地址
");
printf("0xx
",&n1_max); //打印各本地变量的内存地址
printf("0xx
",&n2_max);
printf("0xx
",&n3_max);
printf("打印max函数中局部变量地址
");
printf("0xx
",&m1); //打印各本地变量的内存地址
printf("0xx
",&m2);
printf("0xx
",&m3);
printf("打印max函数中malloc分配地址
");
printf("0xx
",p_max); //打印各本地变量的内存地址
if(i) return 1;
else return 0;
}
int main(int argc, char **argv)
{
static int s1=0, s2, s3=0;
int v1=0, v2, v3=0;
int p;
p = (int )malloc(10);
printf("打印各全局变量(已初始化)的内存地址
");
printf("0xx
",&g1); //打印各全局变量的内存地址
printf("0xx
",&g2);
printf("0xx
",&g3);
printf("======================
");
printf("打印程序初始程序main地址
");
printf("main: 0xx
", main);
printf("打印主参地址
");
printf("argv: 0xx
",argv);
printf("打印各静态变量的内存地址
");
printf("0xx
",&s1); //打印各静态变量的内存地址
printf("0xx
",&s2);
printf("0xx
",&s3);
printf("打印各局部变量的内存地址
");
printf("0xx
",&v1); //打印各本地变量的内存地址
printf("0xx
",&v2);
printf("0xx
",&v3);
printf("打印malloc分配的堆地址
");
printf("malloc: 0xx
",p);
printf("======================
");
max(v1);
printf("======================
");
printf("打印子函数起始地址
");
printf("max: 0xx
",max);
return 0;
}
打印结果:
ELF目标文件格式的最前端是 ELF****文件头(****ELF Header****) ,
包含了描述整个文件的基本属性,如ELF版本、目标机器型号、 程序入口地址 等
3 加载:
‘伍’ 请问为什么我用VS2015编程C语言调试的时候总是不成功,出现无法加载 mspdb140.dll
1. 找到VS2015 IDE的安装目录,以本人电脑上的目录为例: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
2.将IDE目录中的msobj140.dll, mspdb140.dll, mspdbcore.dll, mspdbsrv.exe四个文件复制到VC的bin目录下覆盖原有文件,以本人电脑为例VC/bin的目录为:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
3.打开VS2015 新建一个C++的win32 控制台程序试一下是否还出现Link1171错误
4.如果还出现这个错误,请将VC/bin目录加入到系统环境变量Path中用分号隔开,重启计算机。
‘陆’ C语言图形驱动加载问题
一开始增加一行#include "bgi.h"
‘柒’ c语言程序执行一闪而过怎么办
原因:在编译执行的时候,如果是直接按F5是调试,就会出现一闪而过的情况,安ctrl+F5的执行不调试,这样的话就不会出现一闪就没的情况了。
方法一:getchar(),即在主函数尾部或程序最后加上getchar();也就是接受键盘输入,这样程序就不会一闪而过,因为程序还没有执行完。
注:当代码中存在scanf()函数时,需要在getchar();前加上fflush(stdin);清除键盘缓存,以防影响getchar()的接收。
方法二:system("pause"),system("pause");加在主函数的尾部,配合windows.h头文件使用才行。即
#include <stdio.h>
#include <windows>
void main(){
……
system("pause"):
……
}
‘捌’ c语言 写的关于*阶梯的代码,运行出来是 满屏不断加载的*
#include<stdio.h>
voidmain()
{
inti,j,k,lev;
printf(":");
scanf("%d",&lev);
for(i=1;i<=lev;i++)
{
for(k=lev-i;k>=0;k--)
{
printf("");
}
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf(" ");
}
}
这种么?
‘玖’ 怎样解决C语言程序头文件加载缓慢的问题
1.什么是源文件 在C语言中以.c结尾的文件为源文件,以.h结尾的也可以说是源文件,但习惯上称其为头文件 2.如何将两个文件一起做编译 放到一个文件夹下即可。 3.VC6。0中的操作 在记事本中写完两个文件,一个保存为.c一个保存为.h,注意,要在一...
‘拾’ C语言中SHSQL.DLL无法加载
可以按照以下方法解决:点击VC(在vc的主窗口中)“TOOLS(工具)”—>“Option(选项)”— >“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就可以了。直接从安装程序文件夹中搜寻SHSQL.DLL,找到后放进已安装的vc->common->MSDev98->Bin下就可以了。