『壹』 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下就可以了。