extern可以置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。
如果檔案a.c需要引用b.c中變數int v,就可以在a.c中宣告extern int v,然後就可以引用變數v。
這裡需要注意的是,被引用的變數v的鏈結屬性必須是外鏈結(external)的,也就是說a.c要引用到v,不只是取決於在a.c中宣告extern int v,還取決於變數v本身是能夠被引用到的。
這涉及到c語言的另外乙個話題--變數的作用域。能夠被其他模組以extern修飾符引用到的變數通常是全域性變數。
在c++中乙個專案要同時進行多個子程式進行執行,就要用到執行緒,在專案中是使用cwinthread,查了其使用方法:
第一 建立執行緒
函式原型:
cwinthread* afxbeginthread( afx_threadproc pfnthreadproc, lpvoid pparam, int npriority =
thread_priority_normal, uint nstacksize = 0, dword dwcreateflags = 0, lpsecurity_attributes
lpsecurityattrs = null );
cwinthread* afxbeginthread( cruntimeclass* pthreadclass, int npriority = thread_priority_normal,
uint nstacksize = 0, dword dwcreateflags = 0, lpsecurity_attributes lpsecurityattrs = null );
uint workforce(lpvoid lpparameter);//執行緒函式宣告
cwinthread *pmyfirstworker,*pmysecondworker;
lpvoid pparam = null;
int npriority = thread_priority_above_normal;//預設為thread_priority_normal
uint nstacksize = 0;//與建立它的執行緒堆疊大小相同
dword dwcreateflags = 0;//建立後立即執行
lpsecurity_attributes lpsecurityattrs = null ;//與建立它的執行緒安全屬性相同
pmyfirstworker=afxbeginthread(workforce, pparam, npriority , nstacksize,
dwcreateflags , lpsecurityattrs);
pmysecondworker=afxbeginthread( workforce, (lpvoid)&port);//如果採用預設值
uint workforce( lpvoid lpparameter // 執行緒所需引數,可以通過它傳遞資料)
第二 銷毀執行緒
首先需要說明的是銷毀執行緒函式afxendthread,只能運用於執行緒內銷毀.不同執行緒之間應建立通訊渠道.下面是段具體**:
uint workforce( lpvoid lpparameter // 執行緒所需引數,可以通過它傳遞資料)
return 0;//什麼不做
}
.h 檔案
#define wm_test wm_user + 1
class ctestthread : public cwinthread
;
.cpp 檔案
#include "stdafx.h"
#include "testthread.h"
implement_dyncreate(ctestthread, cwinthread)
ctestthread::ctestthread()
ctestthread::~ctestthread()
begin_message_map(ctestthread, cwinthread)
on_thread_message(wm_test,ontest)
end_message_map()
bool ctestthread::initinstance()
int ctestthread::exitinstance()
void ctestthread::ontest(wparam wparam,lparam lparam)
呼叫的地方
cwinthread* m_pthrd;
//啟動
m_pthrd = afxbeginthread(runtime_class(ctestthread));
// 需要執行執行緒中的操作時
m_pthrd->postthreadmessage(wm_test,null,null);
// 結束執行緒
handle hp=m_pthrd->m_hthread;
if (hp)
closehandle(hp);
}
goto語句也稱為無條件轉移語句,其一般格式如下: goto 語句標號; 其中語句標號是按識別符號規定書寫的符號, 放在某一語句行的前面,標號後加冒號(:)。語句標號起標識語句的作用,與goto 語句配合使用。
如: label: i++;
loop: while(x<7);
goto:loop
c語言不限制程式中使用標號的次數,但各標號不得重名。goto語句的語義是改變程式流向, 轉去執行語句標號所標識的語句。
goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。
HTML學習記錄5
html框架 乙個頁面中可以包含若干個html文件 框架寫法 不能與body並存 屬性 noresiz或noresize noresize 禁止拖到頁面 子壓麵 frameborder 0 當前框架頁面中去除框架邊框 cols 左右分割大小 rows 上下分割大小 混合框架 寫法 targrt bl...
Objective C 學習記錄 5
2018.7.27 陣列的定義和使用 陣列分為不可變陣列和可變陣列 nsarray array nsarray arraywithobjects ddd mycl,nil nsmutablearray mutablearray mutablearray addobject view addobjec...
OpenCV學習記錄5
一 學習內容 1 兩張影象按權重相加 2 兩張影象相乘 應該可用於頻域濾波吧 二 include include using namespace std using namespace cv int main int argc,char ar if src2.data namedwindow fig...