抄書(標準C語言指南)

2021-10-01 19:27:46 字數 2311 閱讀 1787

c有完善的資料和控制流處理機制,但並不提供任何輸入/輸出手段。因此,為了實現這樣的目的,往往需要借助於機器語言、組合語言,或者呼叫為特定裝置而編寫的庫函式。如果程式是在宿主式環境下執行的,那麼,呼叫作業系統提供的例程(函式)往往是最方便的選擇,有時也是唯一的選擇。

為了更好的演示如果呼叫作業系統的功能,我們特地將工作的環境選取為大家都能熟悉的windows,並假定下面的程式**已經被保護為原始檔wincon.c:

__stdcall void

* getstdhandle (

unsigned

long);

__stdcall int writeconsolea (

void*,

const

void*,

unsigned

long*,

unsigned

long

,unsigned

long*,

void*)

;int wsprintfa (

char*,

const

char*,

...)

;#define buff_size 256

#define std_output -11

int main (

void),

0);return0;

}

以上程式中,倆個「#define」引導的行是預處理指令,用於定義預處理巨集。

typedef

struct

(int i;

) stghwnd;

__stdcall int messageboxa (stghwnd *

,const

char*,\

const

char*,

unsigned);

__stdcall int playsound (

const

char

*,stghwmnd *

,unsigned

long);

#define snd_filename 0x20000

#define mb_ok 0

#define mb_iconinfprmation 64

int main (

void

)

這個程式以然要分倆步進行轉換,首先是生成目標檔案:

gcc -c -mwindows -fexec-charset=gbk wingui.c
ld c:\mingw\lib\crt2.

0 wingui.o

-lc:\mingw\liv\cgg\mingw32\4.7

.1-lmingw32 -lmsvcrt --enable-stdcall-fixup

c:\windows\system32\kernel32.dll

c:\windows\system32\user\user32.dll

c:\windows\system32\winmm.dll

#include

typedef struck (

int i;

) stghwnd;

__stdcall int messageboxw (stghwnd *

,const wchar_t *

,\ const wchar_t *

,unsigned);

__stdcall int

playsound

(const

char

*,stghwnd *

,unsigned

long);

#define snd_filename 0x20000

#define mv_ok 0

#define mb_iconinformation 64

intmain

(void

)

在這裡,messageboxw函式的第二個和第三個引數是指向寬字串的指標,wchar_t型別是在標頭檔案中定義的。一旦在字面串的前面加了「l」,則是乙個寬字面串,他意味著不是通常意義的元字符集到執行字符集的轉換,而是從源字符集到寬執行字符集的轉換,使用寬字元的編碼方案。在這裡我們應當指定utf-16le以適應windows的寬字元編碼要求,所以你可以在編譯階段使用一下命令:

gcc -c -mwindows -fwide-exec-chaset=utf-

16le wingui.c

抄書(標準C語言指南)

位元組的概念是明確,但它的長度缺乏標準定義,具體的說明參加 位元組 儘管在很多流行的系統中,乙個位元組的長度被視為8個位元,但是,這個並不是說乙個位元組就是8個位元。不管是在基本源字符集,還是在基本執行字符集裡,從字元 0 開始,一直到 9 他們的編碼值是依次遞增的,這就是說,下面的 他的功能是列印...

抄書(標準C語言指南)

空字元是基本字符集中的乙個 成員 字元,長度被定義為乙個位元組,他的所有位 位元 都是0.空字元用脫轉序列 0 表示。空字元放在字串的尾部,作為這個串的終止標記。作為乙個例項,下面的 用於統計字串的長度,但不包括尾部 的空字元 int s len const char s 空白字元 white sp...

抄書(標準C語言指南)

基本型別 basic types 包括無符號整型型別 有符合整數型別 浮點型別和char 型別 具體可參加各自的詞條。基本型別都是完整的物件型別,他們都具有已知的大小。對於每乙個有符號整數型別而言,他們都對應著乙個無符號整數型別。例如signed char 是有符號整數型別,他有乙個對應的無符號整數...