標頭檔案編寫:
1.#define max_sat_num 6
程式中經常用到的有意義的數字用巨集代替寫在標頭檔案開始處。
2.類設計
class
結構體對於變長的資料成員定義為u8 data[1];
例如#pragma pack(push)
#pragma pack(1)
typedef struct s_frame
dataframe, * pdataframe;
#pragma pack(pop)
用的時候可以直接 pdataframe pframe = (pdataframe)pdata;
pframe->data即可得到資料域首位址。
注意dataframe基本上用不到因為該結構體用於指標型別
更有意義。
void* m_pcontex;
上下文指標的使用。為了避免a.h標頭檔案中想訪問b.h標頭檔案中的類物件,b.h標頭檔案中還想訪問a.h
標頭檔案中的物件這樣的情況出現交叉訪問的問題。b.h標頭檔案中包含a.h標頭檔案並定義乙個a m_a;資料
成員。而a.h中定義乙個void* m_pb;在b類初始化的時候將m_a.m_pb = this;即可。
這樣就解決了交叉訪問的問題。
或者在a.h中定義乙個容器vectorm_vdata;。b.cpp中收到資料直接放到m_vdata中,而a.pp中開
乙個執行緒不停的對m_vdata.size();進行判斷,只要有值就進行處理,處理後刪掉。要注意的是執行緒安全
問題。訪問m_vdata時要加鎖。
/**獲取4位元組crc演算法**/
多行注釋要以上面的格式書寫。第一行寫函式功能。空一行後面接著寫引數說明,返回值說明。
#pragma once
//dtea header
#include "stdafx.h"
#include "header.h"
#include <_datatype.h>
#include "mthandler.h"
#include
using namespace dtea;
#define max_sat_num 6 //支援衛星模擬器的最大個數,目前第一類模擬器1顆,第二類模擬器5顆,共6顆
namespace dtmtserver
//衛星模擬器的aos遙測資料接收介面,僅支援低速遙測
dtrefobjptr
m_refobjtm;
dtlocalreportptr
m_refrptcadu;
dtlocalreportcbptr
m_ptbcadu;
dtlocalreportptr
m_refrptepdu;
dtlocalreportcbptr
m_ptbepdu;
//衛星模擬器的遙控注入函式介面
dtrefobjptr m_refobjtc;
dtlocalfuncptr m_pfunctc;
//本星scid
u8 m_lscid;
//位址同步字
u16 m_tc_addr;
//內外時頻狀態 0:內時頻 1:外時頻
u8 m_time_mode;
//模擬器狀態 0:正常 1:異常 2:靜默 3:其他
u8 m_state;
};sat_sim m_sats[max_sat_num];
protected:
virtual void setallfunctionhandler();
virtual void oninitialize1();
virtual void oninitialize2();
virtual void onclosing();
//report**服務引數
void repparam();
void startthrd();
void stopthrd();
//讀取某個檔案,將其中的內容以二進位制塊的形式返回
spreadfile(const string& filename);
protected:
//udp網路通訊
sp m_spengine;
spm_spsvr;
spm_spcon;
//綜保的ip位址和埠號
string
m_ipzb;
u16m_portzb;
//監控終端的ip位址和埠號
string
m_ipmt;
u16m_portmt;
//組播發送遙測資料的ip位址和埠號
string
m_ipmul;
u16m_portmul;
//監控服務執行狀態報告
dtea::dtreportiptr
m_rep_param;
//在物件關閉前需要設定為null,避免迴圈引用
spm_pthrepparam;
bool
m_brunningrepparam;
//工作路徑(配置檔案所在路徑)
string m_swkpath;};}
2 9編寫自己的標頭檔案
1.預編譯標頭檔案 1 新增乙個stdafx.h檔案 名字隨便取,這裡用了vs預設提供的名稱 在這個.h檔案裡include要使用的標頭檔案 一般是外部的庫,自己寫的不常變的標頭檔案也可以加進來 2 新增乙個stdafx.cpp檔案,並include stdafx.h 3 專案屬性 c c prec...
C語言標頭檔案的編寫
標頭檔案是一種文字檔案,使用文字編輯器將 編寫好之後,以副檔名 h儲存就行了。標頭檔案中一般放一些重複使用的 例如函式宣告,變數宣告,常數定義,巨集的定義等等。當使用 i nclude 語句將標頭檔案引用時,相當於將標頭檔案中所有內容,複製到 i nclude處。為了避免因為重複引用而導致的編譯錯誤...
如何編寫自己的標頭檔案
不多說直接進入主題 想要使用自己的標頭檔案,就需要自己建立乙個專案,在自己的 專案 裡面才能使用自己的標頭檔案 我是新手,說錯還望大佬指正 如何建立專案 建立完專案後就可以編寫自己的函式和標頭檔案了 1.建立主函式main 在專案位置右鍵新建即可,並重命名main 寫自己的標頭檔案,lyq.h ly...