c語言dualcard,C語言中的簡單數據類型包括

本文目錄一覽:

如何用C語言編寫探測cpu的程序

參考下面的文章:

利用利用CPUID 彙編指令(機器碼:0FH A2H, 如果你的編譯器不支持CPUID 指令,只有emit 機器碼了), 該指令可以被如下CPU識別:

Intel 486 以上的CPU,

Cyrix M1 以上的CPU,

AMD Am486 以上的CPU

(1) 取CPU OEM 字元串, 判斷CPU 廠商

先讓EAX=0, 再調用CPUID

Inel的CPU將返回:

EBX:756E6547H ‘Genu’

EDX:49656E69H ‘ineI’

ECX:6C65746EH ‘ntel’

EBX,EDX,ECX 將連成”GenuineIntel”, 真正的Intel。

Cyrix 的CPU 將返回:

EBX:43797269H

EDX:78496E73H

ECX:74656164H

“CyrixInstead”,”Cyrix 來代替”。

AMD 的CPU 將返回:

EBX:41757468H

EDX:656E7469H

ECX:63414D44H

“AuthenticAMD”, 可信的AMD。

在Windows98中,用右鍵單擊”我的電腦”,選擇” 屬性- 常規”在計算機描述 處就可看見CPU OEM 字元串。

(2)CPU 到底是幾86, 是否支持MMX

先讓EAX=1,再調用CPUID

EAX的8到11位就表明是幾86

3 – 386

4 – i486

5 – Pentium

6 – Pentium Pro Pentium II

2 – Dual Processors

EDX 的第0位:有無FPU

EDX的第23位:CPU是否支持IA MMX,很重要啊 !如果你想用那57條新增的指 令,先檢查這一位吧,否則就等著看Windows 的”該程序執行了非法指令,將被關 閉” 吧。

(3) 專門檢測是否P6架構

先讓EAX=1,再調用CPUID

如果AL=1,就是Pentium Pro 或Pentium II

(4) 專門檢測AMD的CPU信息

先讓EAX=80000001H,再調用CPUID

如果EAX=51H, 是AMD K5

如 果EAX=66H, 是K6

EDX第0 位: 是否有FPU( 多餘的 !誰用過沒FPU的K5,K6?)

EDX 第23 位,CPU是否支持MMX,

程序如下:

//——CPUID Instruction Demo Program————

#include

#include

#pragma hdrstop

//————————————————

#pragma inline

#pragma argsused

int main(int argc, char **argv)

{

char OEMString[13];

int iEAXValue,iEBXValue,iECXValue,iEDXValue;

_asm {

mov eax,0

cpuid

mov DWORD PTR OEMString,ebx

mov DWORD PTR OEMString+4,edx

mov DWORD PTR OEMString+8,ecx

mov BYTE PTR OEMString+12,0

}

cout “This CPU ‘s OEM String is:” OEMString endl;

_asm {

mov eax,1

cpuid

mov iEAXValue,eax

mov iEBXValue,ebx

mov iECXValue,ecx

mov iEDXValue,edx

}

if(iEDXValue0x800000)

cout “This is MMX CPU” endl;

else

cout “None MMX Support.” endl;

int iCPUFamily=(0xf00 iEAXValue) 8;

cout “CPU Family is:” iCPUFamily endl;

_asm{

mov eax,2

CPUID

}

if(_AL==1)

cout “Pentium Pro or Pentium II Found”;

getch();

return 0;

}

最後,最好學會自己去搜索你需要的信息,

我上面的答案也是搜索來的。

關鍵字「C語言 CPU 信息」

double是什麼意思

double意思為一對,一雙;雙重地;酷似的人;把…對摺;變成兩倍;增加一倍。

double可作形容詞、副詞、動詞用。

double(雙精度浮點型)是計算機使用的一種資料型別。

比起單精度浮點數(float),double(雙精度浮點數)使用64位(8位元組)來儲存一個浮點數。它可以表示十進位的15或16位有效數字,負值取值範圍為-1.7976E+308到-4.94065645841246544E-324,正值取值範圍為4.94065645841246544E-324到1.797693E+308一站式出國留學攻略

C語言malloc函數 segment error如何解決?

1

main函數要修改。

2

輸出函數循環死循環要修改。

c語言編程:編寫一個函數,統計出一行字元中英文字母的個數,在主函數輸入字元串,調用該函數後輸出結果

#include stdio.h

void count(char *s, int *a, int *b)

{

*a = *b = 0;

while(*s)

{

if(‘A’ = *s *s = ‘Z’ || ‘a’ = *s *s = ‘z’)

(*a)++;

else

(*b)++;

s++;

}

}

int main()

{

char s[100];

int zm, qt;

printf(“輸入字元串:\n”);

gets(s);

count(s, zm, qt);

printf(“字母:%d\n”, zm);

printf(“其它:%d\n”, qt);

return 0;

}

沒有測試,你試一下對不對。應該是這樣的

linux系統問題 高手進

報錯的意思基本上是spinlock在使用cpu的#0號時出現了bug。你安裝的是什麼版本的linux?建議你換一個linux版本試試看,如suse、RedHat(fedora),ubuntu等版本

[Linux]編寫一個簡單的C語言程序,編寫Makefile文件。

八 環境變數

8.1 查看環境變數

$ env  顯示所有的環境變數設置

$ echo $ENV_VARIABLE  顯示指定環境變數的設置

例:

$ echo $PATH

/bin:/etc:/usr/bin:/tcb/bin

8.2 設定環境變數

$ ENV_VARIABLE=XXX;export ENV_VARIABLE

例:

$ PATH=$PATH:$INFORMIXDIR/bin;export PATH  將環境變數PATH設定為原PATH值+$INFORMIXDIR/bin

8.3 取消環境變數設置

$ unset $ENV_VARIABLE

例:

$ set GZJ=gzj;export GZJ  設置環境變數GZJ

$ echo $GZJ

gzj  顯示環境變數值

$ unset $GZJ  取消環境變數GZJ的設置

$ echo $GZJ

 已取消

一 makefile規則

makefile是一個make的規則描述腳本文件,包括四種類型行:目標行、命令行、宏定義行和make偽指令行(如「include」)。makefile文件中注釋以「#」開頭。當一行寫不下時,可以用續行符「\」轉入下一行。

1.1 目標行

目標行告訴make建立什麼。它由一個目標名表後面跟冒號「:」,再跟一個依賴性表組成。

例:

example: depfile deptarget

該目標行指出目標example與depfile和deptarget有依賴關係,如果depfile或deptarget有修改,則重新生成目標。

example1 example2 example3: deptarget1 deptarget2 depfile

該目標行指出目標名表中的example1、example2、example3這三個各自獨立的目標是用相同的依賴列表和規則生成的。

clean:

空的依賴列表說明目標clean沒有其他依賴關係。

目標行後續的以Tab 開始的行是指出目標的生成規則,該Tab字元不能以空格代替。例如:

example.o:example.c example.h

cc –c example.c

該例子指出目標example.o依賴於example.c和example.h。如果example.c或example.h其中之一改變了,就需要執行命令cc –c example.c重新生成目標example.o。

可以用文件名模式匹配來自動為目標生成依賴表,如:

prog: *.c

以下是一個簡單的makefile的例子:

圖 1 最簡單的makefile例

make使用makefile文件時,從第一個目標開始掃描。上例中的第一個目標為all,所以目標clean不會自動被執行,可以通過命令make clean來生成目標。

1.2 命令行

命令行用來定義生成目標的動作。

在目標行中分號「;」後面的文件都認為是一個命令,或者一行以Tab製表符開始的也是命令。

如在上面的makefile例中,第三行以Tab字元開始的cc命令即是一個命令行,說明要生成hello應執行的命令。也可以寫成:hello:hello.o;cc –c hello –L…

一般情況下,命令行的命令會在標準輸出中回顯出來,如對上面的makefile執行make時,標準輸出如下:

cc -c hello.c

cc -o hello -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello.o

cc -c hello1.c

cc -o hello1 -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello1.o

如果不希望命令本身回顯,可在命令前加@字元,如在上例中不希望回顯cc –c hello.c和cc –c hello1.c,可修改makefile文件如下:

圖 2 抑制回顯的makefile例

對該makefile文件執行make時,標準輸出如下:

cc -o hello -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello.o

cc -o hello1 -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello1.o

可以看出,命令行前有@字元的不回顯。

1.3 宏定義行

在makefile中,可以使用宏定義減少用戶的輸入,例如上例中對hello和hello1的編譯選項均為「-L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11」,此時可以用宏來代替,如:

圖 3 使用宏定義的makefile例

宏定義的基本語法是:

name=value

在定義宏時,次序不重要。宏不需要在使用前定義。如果一個宏定義多次,則使用最後一次的定義值。

可以使用「$」字元和「()」或「{}」來引用宏,例如:

cc –o hello.o $(CCFLAGS) hello.o

也可以將一個宏賦值給另一個宏,但這樣的定義不能循環嵌套,如:

A=value1

B=value2

C=$(A) $(B)等價於C=value1 value2

1.4 偽指令

makefile大部分由宏定義行、命令行和目標行組成。第四種類型是make偽指令行。make偽指令沒有標準化,不同的make可能支持不同的偽指令集,使得makefile有一定的不兼容性。如果要考慮移植性問題,則要避免使用make偽指令。但有一些偽指令,如include,由於使用比較多,很多不同make都提供該偽指令。

1.4.1 偽指令include

該偽指令類似C語言中的#include,它允許一次編寫常用的定義並包括它。include偽指令必須在一行中,第一個元素必須是include,並且跟一個要包含的文件名,如:

include default.mk

1.4.2 偽指令「#」

「#」字元也是make的偽指令,它指出「#」後面的文件是注釋,如:

PROGNAME=test # define macro

#don’t modify this

二 後綴規則

2.1 雙後綴規則

在前面的makefile例中有許多重複內容,例如,生成hello和hello1的命令類似,生成hello.o和hello1.o的命令也類似,除了編譯或鏈接的文件不一樣外,其它均相同,這時,我們就可以使用後綴規則。首先看一個雙後綴的例子:

圖 4 使用雙後綴規則的makefile例

後綴規則使用特殊的目標名「.SUFFIXES」。

第一行中.SUFFIXES的依賴表為空,用來清除原有的後綴規則,因為.SUFFIXES可以在makefile中多次使用,每一次都將新的後綴規則加入以前的後綴規則中。

第二行中指定後綴規則為「.c .o」,即表示將所有的.c文件轉換為.o文件。

第三行指定將.c文件轉換成.o文件的方法。$(CC)為make的預定義宏,其默認值為cc,$為特殊的宏,代替當前的源文件,即所有要編譯的.c文件。

第六行指定目標hello和hello1的生成方法。$@為特殊的宏,代替當前的目標名,即hello和hello1,$@.o即為hello.o和hello1.o。

上例介紹的是雙後綴規則,即它包含兩個後綴,如.c.o,用來把一個C源文件編譯為目標文件。雙後綴規則描述如何由第一個後綴類型的文件生成第二個後綴類型的文件,例如:.c.o規則描述如何由.c文件生成.o文件。

2.2 單後綴規則

單後綴規則描述了怎樣由指定後綴的文件生成由它基名為名字的文件。例如使用單後綴規則.c,可以由hello.c和hello1.c生成hello和hello1文件。例如將前面的makefile改為:

圖 5 使用單後綴規則的makefile例

由於.c後綴規則為make標準後綴規則,make為其指定了相應的命令行,所以在makefile中可以不用再指定其目標生成的具體命令行。

下表是make提供的標準後綴規則。

表 1 make標準後綴規則

後綴規則 命令行

.c $(LINK.c) –o $@ $ $(LDLIBS)

.c.ln $(LINK.c) $(POUTPUT OPTPUT OPTION) –i $

.c.o $(COMPILE.c) $(OUTPUT OPTION) $

.c.a $(COMPILE.c) –o $% $

$(AR) $(ARFLAGS) $@ $%

$(RM) $%

三 特殊目標

在後綴規則中使用了特殊目標.SUFFIXES,用來指定新增的後綴規則。make還提供了幾個特殊目標來設置make的行為,下面為一些特殊的目標:

 .IGNORE

make在執行命令行時,如果返回的是錯誤碼,make的預設動作是停止並退出。增加該目標後,make將忽略命令行返回的錯誤碼,並繼續執行後續的操作。

 .SILENT

前面已經介紹過,make在執行命令行時會回顯命令行內容,在命令行前增加「@」字元將抑制該命令行的回顯。

如果增加該目標,所有的命令行不再回顯,相當於在每個命令行前均增加了「@」字元。

 .PRECIOUS

當收到一個信號或從shell命令返回非零的錯誤碼時,make刪除它所有已建立的文件。但有些文件即使出了錯誤,用戶也不想讓make刪除,這些文件可以作為.PRECIOUS目標的參數。它可以在一個makefile中出現多次,每一次都累積文件列表。

 .SUFFIXES

它為makefile指定新的後綴規則,新的後綴規則作為.SUFFIXES的依賴表給出。.SUFFIXES可以在一個makefile中多次使用,每一次都將新的後綴規則加入以前的後綴規則中,如果.SUFFIXES的依賴表為空,則設置後綴規則表為空。

四 特殊的宏

為簡單使用規則,make提供了幾個特殊的宏:

 $@

整個當前目標名的值可以由宏「$@」來代替。

 $

當前的源文件由「$」來代替。例如,在前面的例子中用到了$(CC) –c $,其中的「$」是所有要編譯的.c文件。宏「$」僅在後綴規則或.DEFAULT中有效。

 $*

當前目標的基名由宏「$*」來代替。例如目標的名字是hello.o,則基名就是除去了後綴.o的hello。

以上介紹的特殊宏使用了make自身的規則,用戶不可以改變。下表介紹了C中預定義的宏。

用途 宏 默認值

庫文檔彙編命令 AR ar

ARFLAGS rv

AS as

ASFLAGS

COMPILE.s $(AS) $(ASFLAGS) $(TARGET ARCH)

C編譯器命令 CC cc

CFLAGS

CPPFLAGS

COMPILE.c $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET ARCH) –c

LINK.c $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET ARCH)

鏈接編輯器命令 LD ld

LDFLAGS

rm命令 RM rm

後綴列表 SUFFIXES .o .c .c~ .s .s~ .S .S~ .ln .f .f~ .F .F~ .l .mod .mod~ .sym

.def .def~ .p .p~ .r .r~ .y .y~ .h .h~ .sh .sh~ .cps .cps~

五 makefile的應用

當調用make時,它在當前目錄下搜索文件名是「makefile」或「Makefile」的文件,並執行。

如果不想使用上述預設文件,可以使用命令行中的「-f」來指定文件,如將編寫的makefile命名為mklib,則指定為「make –f mklib」。

原創文章,作者:WLZK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140871.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WLZK的頭像WLZK
上一篇 2024-10-04 00:24
下一篇 2024-10-04 00:24

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python 轉換數據類型

    本文將詳細探討Python中轉換數據類型的方法和技巧,幫助大家更好地處理不同類型的數據。 一、數據類型概述 在Python中,常用的數據類型包括字元串、整數、浮點數、列表、元組、字…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論