Printf scanf
目前成都創新互聯已為上千多家的企業提供了網站建設、域名、虛擬空間、網站托管、企業網站設計、鼓樓網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
應該不能直接調用的。可以寫出替代函數,
就以輸出為例。將光標定位在下一個位置,向顯存輸入字符。用足夠大的連續的空間存放字符串。
這樣做成可以隨時調用的子函數就好了。
還可以鍛煉自己。
或者是反匯編一下VC的PRINTF 函數。
函數名: textbackground
功 能: 選擇新的文本背景顏色
用 法: void textbackground(int color);
程序例:
#include conio.h
int main(void)
{
int i, j;
clrscr();
for (i=0; i9; i++)
{
for (j=0; j80; j++)
cprintf("C");
cprintf("\r\n");
textcolor(i+1);
textbackground(i);
}
return 0;
}
函數名: textcolor
功 能: 在文本模式中選擇新的字符顏色
用 法: void textcolor(int color);
程序例:
#include conio.h
int main(void)
{
int i;
for (i=0; i15; i++)
{
textcolor(i);
cprintf("Foreground Color\r\n");
}
return 0;
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。
它的具體功能是返回處理器調用某個進程或函數所花費的時間。函數返回從“開啟這個程序進程”到“程序中調用clock()函數”時之間的CPU時鐘計時單元(clock tick)數,其中clock_t是用來保存時間的數據類型。
在time.h文件中,我們可以找到對它的定義:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
clock_t其實就是long,即長整形。該函數返回值是硬件滴答數,要換算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000,這表示硬件滴答1000下是1秒,因此要計算一個進程的時間,用clock()除以1000即可。
clock的返回值一直是0的原因:
1、編譯器優化,for循環實際根本沒執行,直接跳過去了,所以時間為0。
2、clock計算的是程序占用cpu的時間,如果你的程序執行的動作很少,那么clock算出的時間也很少。
3、建議使用time gettimeofday函數來計時。
擴展資料:
C語言中clock()函數的程序例1:(TC下運行通過)
#include?stdio.h
#include?time.h
int?main(void)
{
clock_t?start,?end;
start?=?clock();
delay(2000);
end?=?clock();
printf("The?time?was:?%f\n",?(double)(end?-?start)?/?CLK_TCK);
return?0;
}
說明:CLK_TCK?定義在TC中的time.h中:#define?CLK_TCK18.2。
在VC6.0中也有關于CLK_TCK的宏定義,不過其值不再是18.2,而是1000。
實際上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。
參考資料來源:百度百科-clock()
如何調用C語言寫的庫,如a.lib等,有對應的庫頭文件a.h。假設a.h中定義了函數:
int
WhyCoding(int
a,
float
b);
做法是,
/*
cpp_a.h
*/
extern
"C"
{
#include
"a.h"
}
或
/*
cpp_a.h
*/
extern
"C"
{
int
WhyCoding(int
a,
float
b);
/*
重定義所有的C函數
*/
}
從上面可以看出,extern
"C"
是用在C和C++之間的橋梁。之所以需要這個橋梁是因為C編譯器編譯函數時不帶
函數的類型信息,只包含函數符號名字,如C編譯器把函數int
a(float
x)編譯成類似_a這樣的符號,C連接器只要
找到了調用函數的符號,就可以連接成功,它假設參數類型信息是正確的,這是C編譯連接器的缺點。而C++
編譯器為了實現函數重載,編譯時會帶上函數的類型信息,如他把上面的a函數可能編譯成_a_float這樣的
符號為了實現重載,注意它還是沒有帶返回值得信息,這也是為什么C++不支持采用函數返回值來區別函數
重載的原因之一,當然,函數的使用者對函數返回值的處理方式(如忽略)也是重要原因。
基于以上,C調用C++,首先需要用封裝函數把對C++的類等的調用封裝成C函數以便C調用,于是extern
"C"
的
作用是:讓編譯器知道這件事,然后以C語言的方式編譯和連接封裝函數.(通常是把封裝函數用C++編譯器按C++
方式編譯,用了extern
"C"
后,編譯器便依C的方式編譯封裝接口,當然接口函數里面的C++語法還是按C++方式
編譯;對于C語言部分--調用者,還是按C語言編譯;分別對C++接口部分和C部分編譯后,再連接就可以實現C
調用C++了).
相反,C++調用C函數,extern
"C"
的作用是:讓C++連接器找調用函數的符號時采用C的方式,即使用_a而不是
_a_float來找調用函數。
在C語言中,main函數可被遞歸調用
在C++標準中,main函數不可以被遞歸調用
但是許多C++編譯器對標準作出了擴展,使得main函數可以被遞歸調用。
可以用Visual C++做個實驗
1)用/Tc編譯器選項(使用C編譯器),main可以遞歸調用
2)用/Tp(編譯C++)和/Ze(啟用語言擴展),main可以遞歸調用
3)用/Tp(編譯C++)和/Za(禁用語言擴展),
main不可以遞歸調用
另外,根據我的經驗,90%的C/C++書籍作者對C/C++并不是完全了解。只有看經典書籍才能在技術細節上沒有錯誤或模糊。
1對于C語言,函數的調用在編譯器的時候決定調用那個函數。編譯完之后直接順序執行。
2OC的函數調用成為消息發送。屬于動態調用過程。在編譯的時候決不能決定真正調用那個函數(實時證明,在編譯階段,oc可以調用任何函數,及時這個函數并未實現,只要申明過就不會報錯,而c語言在編譯階段或報錯)。
分享標題:ocaml調用C語言函數 ocaml 編譯器
分享URL:http://vcdvsql.cn/article16/hpjcdg.html
成都網站建設公司_創新互聯,為您提供網站維護、關鍵詞優化、網站導航、App設計、微信公眾號、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯