user-0 提问: 无聊 各位来秀秀码风如何 ? 

回复:
user: user-0
content: 拖延症患者来结贴了

user: user-0
content: 引用 15 楼 bear234 的回复:楼主，你的风格我不敢恭维啊  为什么函数定义时的大括号要缩进去？为什么不和class那样class和大括号对其呢？你不觉得你的缩进很丑么.....  如果你用vs的话，我建议你ctrl+A，然后ctrl+K+F 看看vs默认的风格   vs在这些方面做得还是很好的额 ... 本人菜鸟 ... 你说的很对 。。抛砖引玉~ 谢谢你的建议 ... 本人最头疼的就是代码风格和变量命名的问题 ...

user: user-1
content: 引用 16 楼 u013550545 的回复:[quote=引用 15 楼 bear234 的回复:] 楼主，你的风格我不敢恭维啊  为什么函数定义时的大括号要缩进去？为什么不和class那样class和大括号对其呢？你不觉得你的缩进很丑么.....  如果你用vs的话，我建议你ctrl+A，然后ctrl+K+F 看看vs默认的风格   vs在这些方面做得还是很好的额 ... 本人菜鸟 ... 你说的很对 。。抛砖引玉~ 谢谢你的建议 ... 本人最头疼的就是代码风格和变量命名的问题 ... [/quote]  基本上，vs的快速格式化的快捷键是先选中你需要格式化的代码，然后ctrl+K + F  这个风格算是微软的风格吧，用vs做c c++ c# 基本都是这个风格 你可以可以去看看eclipse的，快捷键是ctrl+i 还有一个不错的东西：netbeans   这个编译环境的风格是可以自己设定的   不过即使它允许自己设定，你也不可能把代码风格设定成你1楼那个样子的.......  做这些编译器的人都是牛人，我建议你最好在上面那些里面选一个自己喜欢的就好了～～～  变量命名的话，除了全部大写表示常量比如PI、首字母小写表示变量ipOfServer、首字母大写表示函数ShowAllMembers外，还有一些程序员里的潜规则  你可以专门去了解下   其实这些潜规则都很有用   可以避免很多2b的问题  另外，如果你是新手的话，我建议你研究一下你常用的编译环境的快捷键   记住最常用的几个  可以大幅提高编译效率 我用的是vs，基本上我在写代码的时候很少用到鼠标，你别觉得鼠标很方便，其实鼠标会降低编写代码时的效率  最好能熟练快捷键，用键盘操作 这样会很快

user: user-1
content: 楼主，你的风格我不敢恭维啊  为什么函数定义时的大括号要缩进去？为什么不和class那样class和大括号对其呢？你不觉得你的缩进很丑么.....  如果你用vs的话，我建议你ctrl+A，然后ctrl+K+F 看看vs默认的风格   vs在这些方面做得还是很好的

user: user-2
content: 再来一段，顶起顶起：void GetDefFileNameByMIME(PCSTR pszMimeType, PSTR pszFileName) {     HKEY hKey = NULL;     DWORD dwSize = 0;     char szSubKey[1024] = { 0 };     char szDefExt[256] = { 0 };      struct {         PCSTR pszMimeType;         PCSTR pszDefExt;     } mapMimeExt[] = {         { "image/bmp",  ".bmp" },         { "image/gif",  ".gif" },         { "image/jpeg", ".jpg" },         { "image/png",  ".png" },         { "image/tiff", ".tiff" },     };      lstrcpyA(pszFileName, "cover");      wsprintfA(szSubKey, "MIME\\Database\\Content Type\\%s", pszMimeType);     if (RegOpenKeyExA(HKEY_CLASSES_ROOT, szSubKey, 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {         RegQueryValueExA(hKey, "Extension", NULL, NULL, (BYTE *)szDefExt, &dwSize);         RegCloseKey(hKey);     }     if (szDefExt[0] == 0 || dwSize == 0) {         for (size_t i = 0; i < ARRAYSIZE(mapMimeExt); i++) {             if (lstrcmpi(mapMimeExt[i].pszMimeType, pszMimeType) == 0) {                 lstrcpy(szDefExt, mapMimeExt[i].pszDefExt);             }         }     }     PathAddExtension(pszFileName, szDefExt); }

user: user-3
content: 引用 10 楼 jiqiang01234 的回复: #ifndef _BD_TRANSMISSION_DEF_H_ #define _BD_TRANSMISSION_DEF_H_ #include "BD_PlatformConfigDef.h"   #ifndef Bool #define Bool    int #endif   #ifndef True #define True    1 #endif  #ifndef False #define False   0 #endif   typedef struct tagBDHandle* BDHandle;  enum {      BD_REQUEST_IC_CHECK,     BD_RETURN_IC_CHECK, /*     BD_REQUEST_SYSTEM_CHECK,     BD_RETURN_SYSTEM_CHECK, */     BD_REQUEST_DATETIME,     BD_RETURN_DATETIME,      BD_REQUEST_POWER_CHECK,     BD_RETURN_POWER_CHECK,      BD_REQUEST_COMMUNICATION,     BD_RETURN_COMMUNICATION,      BD_REQUEST_POSITION,     BD_RETURN_POSITION,      BD_REQUEST_BAUDRATE,      BD_RETURN_FEEKBACK,       BD_RETURN_MESSAGE,      //单播或通播长消息的发送状态     BD_RECV_MESSAGE,        //接收到长消息      BD_NMEA_GPRMC,     BD_NMEA_GPGSA,      BD_NMEA_BDRMC,     BD_NMEA_BDGSA,      BD_NMEA_GNRMC,     BD_NMEA_GNGSA,      BD_NMEA_GPGSV,     BD_NMEA_BDGSV,  };  enum {     FEEDBACK_CODE_SUCCESS,                    //成功     FEEDBACK_CODE_FAILURE,                    //失败     FEEDBACK_CODE_SIGNAL_UNLOCK,              //信号未锁定     FEEDBACK_CODE_LOW_BATTERY,                //电量不足     FEEDBACK_CODE_UNAVAILABLE_EMISSION_FREQUENCY,        //发射频度未到     FEEDBACK_CODE_CRYPTO_ERROR,               //加密解密错误     FEEDBACK_CODE_CRC_ERROR,                  //CRC错误     FEEDBACK_CODE_UNKNOWN,                    //未知的反馈信息  };  enum {     MESSAGE_CODE_SUCCESS,     MESSAGE_CODE_FAILURE, };  enum BD_Protocol {     BD_PROTOCOL_V1,  //北斗一代协议     BD_PROTOCOL_V2,  //北斗二代协议     BD_PROTOCOL_V3,  //东方红协议 };  enum BD_Baudrate {     BD_BAUDRATE_1200     = 1200,     BD_BAUDRATE_2400     = 2400,     BD_BAUDRATE_4800     = 4800,     BD_BAUDRATE_9600     = 9600,     BD_BAUDRATE_19200    = 19200,     BD_BAUDRATE_38400    = 38400,     BD_BAUDRATE_57600    = 57600,     BD_BAUDRATE_115200   = 115200 };  enum BD_DataBits {     BD_DATABITS_5   = 5,     BD_DATABITS_6   = 6,     BD_DATABITS_7   = 7,     BD_DATABITS_8   = 8 };  enum BD_StopBits {     BD_STOPBITS_1,     BD_STOPBITS_1_5,     BD_STOPBITS_2 };  enum BD_Parity {     BD_PARITY_NONE,     BD_PARITY_ODD,     BD_PARITY_EVEN };  enum BD_PriorityLevel {     PRIORITY_LEVEL_0,   //最高优先级     PRIORITY_LEVEL_1,     PRIORITY_LEVEL_2,   //只能使用比level2更低的优先级，高的优先级内部使用      //以下为调用端可以使用的优先级     PRIORITY_LEVEL_3,     PRIORITY_LEVEL_4,     PRIORITY_LEVEL_5,     PRIORITY_LEVEL_6,   //最低优先级      PRIORITY_LEVEL_COUNT };  #pragma pack(1)    struct BD_CommParam {     enum BD_Protocol protocol;     enum BD_Baudrate baudrate;     enum BD_Parity parity;     enum BD_DataBits databits;     enum BD_StopBits stopbits; };  struct BD_Time {     uint8_t hour;     uint8_t minute;     uint8_t second;     uint16_t millisec; };  struct BD_Date {     uint8_t year;   //0=2000,1=2001,2=2002,...     uint8_t month;     uint8_t day; };  struct BD_GPSPosition {     uint32_t value; //单位:度，扩大了10000倍     char location;  //'N''S''W''E' };  //Recommended Minimum sentence C struct BD_RMC {     struct BD_Date date;     struct BD_Time utc;     char status;    //'A'=active or 'V'=Void.     struct BD_GPSPosition latitude;     struct BD_GPSPosition longitude;     uint16_t speed;   //对地航速,单位:节,Speed over the ground，扩大了10倍     uint16_t angle;   //真航迹角,单位:度,Track angle True,扩大了10倍 };  #define BD_SATELLITE_PRN_COUNT    12 struct BD_GSA {     char fixMode;       //定位模式,=='A'自动,=='M'手动     uint8_t fixType;    //定位类型,==0未定位,==2是2D定位,==3为3D定位     uint8_t prn[BD_SATELLITE_PRN_COUNT];  //定位卫星的prn(伪随机噪声码)     uint8_t count;                         //prn数组中有效数据的个数 };  #define BD_SENTENCE_SATELLITE_COUNT     4 struct BD_GSV {     uint8_t viewNum;    //可视卫星的数量     struct     {         uint8_t prn;         uint16_t elevation;     //仰角,单位:度         uint16_t azimuth;       //方位角,单位:度         uint8_t snr;            //信噪比(Signal to Noise Ratio)     }info[BD_SENTENCE_SATELLITE_COUNT];     uint8_t count; };  struct BD_RequestDateTime {     uint16_t frequency;       //输出频度，单位:秒,==0单次,>0周期输出 };  struct BD_ReturnDateTime {     struct BD_Date date;     struct BD_Time time; };  struct BD_RequestICCheck {     uint32_t addr;      //返回指定设备地址的ic信息,如果是本机设备则为0     uint8_t frame;      //帧号 };  struct BD_ReturnICCheck {     uint32_t addr;              //查询的设备地址     uint8_t frame;              //帧号     uint32_t broadcastAddr;     //通播地址     uint8_t feature;            //用户特征值     uint16_t frequency;         //服务频度,单位:秒     uint8_t level;              //通信等级1~4     uint8_t encrypt;            //是否加密，!=0加密，==0不加密     uint16_t userCount;         //下属用户数 };  #define BD_LocalICInfo BD_ReturnICCheck  #define BD_BEAMPOWER_COUNT      6 struct BD_RequestPowerCheck {     uint8_t frequency;  //输出频度，单位:秒,==0单次,>0周期输出 };  #define BD_MAX_BEAMPOWER_VALUE     4 struct BD_ReturnPowerCheck {     uint8_t power[BD_BEAMPOWER_COUNT]; //波束功率 };  struct BD_ReturnFeekback {     uint16_t code;        //返回的信息码     uint32_t description; //若是FEEDBACK_CODE_UNAVAILABLE_EMISSION_FREQUENCY，表示需要等待的时间，单位:秒;若是BD_FEEDBACK_UNKNOWN，表示返回的原始值 };  #define BD_MAX_REQUEST_CONTENT_SIZE     78 struct BD_RequestCommunication {     uint32_t toAddr;     uint8_t content[BD_MAX_REQUEST_CONTENT_SIZE];     uint16_t size;     uint8_t format; };   #define BD_MAX_RETURN_CONTENT_SIZE      210 struct BD_ReturnCommunication {     uint32_t fromAddr;     uint8_t content[BD_MAX_RETURN_CONTENT_SIZE];     uint16_t size;     uint8_t format;     //内容的编码格式,==0为内码(以双字节为单位的二进制),==1为普通二进制,==2为混发二进制(0xA4开头)     struct BD_Time t;   //发信时间 };   struct BD_Position {     uint8_t degree;     uint8_t minute;     uint32_t second;    //扩大1000倍后的秒     char location;      //'N''S''W''E' };  struct BD_RequestPosition {     uint16_t frequency;     //入站频度,单位:秒,==0单次,>0周期输出 };  struct BD_ReturnPosition {     struct BD_Time t;       //定位时间     struct BD_Position latitude;     struct BD_Position longitude;     uint8_t accuracy;       //精度,==0为20米,==1为100米     int32_t elevation;    //高程(可以为负数)，单位:米 };  struct BD_RequestBaudrate {     uint16_t baudrate; };  //不要超过8k,因包序号表示的范围限制 #define BD_MAX_MESSAGE_CONTENT_SIZE       2048 //对单播地址发送长消息的请求 struct BD_RequestUnicastMessage {     uint32_t toAddr;     uint8_t priority;    //发送优先级     uint8_t content[BD_MAX_MESSAGE_CONTENT_SIZE];     uint32_t size; };   //不能超过255 #define BD_MAX_BROADCAST_ADDRESS_COUNT     100 //通播发送长消息的请求 struct BD_RequestBroadcastMessage {     uint32_t toAddrs[BD_MAX_BROADCAST_ADDRESS_COUNT];     uint8_t addrCount;     uint8_t priority;      uint8_t content[BD_MAX_MESSAGE_CONTENT_SIZE];     uint32_t size; };  struct BD_ReturnMessage {     uint32_t id;        //发送时返回的id     uint32_t toAddr;    //发往的目的地址,如果是通播发送,每向一个地址发送成功便产生一次本消息     uint8_t code;       //返回码 };  struct BD_RecvMessage {     uint32_t fromAddr;     uint8_t content[BD_MAX_MESSAGE_CONTENT_SIZE];     uint32_t size; };  #pragma pack()  #endif // _BD_TRANSMISSION_DEF_H_    一个感觉，瘦高个，代码很高挑。膜拜！

user: user-4
content: http://bbs.csdn.net/topics/380157851

user: user-5
content: void LSVM::SMOTrainModelExample(     IN const LSVMMatrix& sampleMatrix,      IN const LSVMMatrix& classVector,      IN float C,     IN float toler,      OUT float& b,      OUT LSVMMatrix& alphaVector) {     unsigned int sampleNum = sampleMatrix.RowLen; // 样本数量     unsigned int featureNum = sampleMatrix.ColumnLen; // 样本的特征数量  	float B = 0.0f; // 分割超平面的截距      // 将alpha向量初始化为0向量(列向量)     alphaVector.Reset(sampleNum, 1);     for (unsigned int i = 0; i < alphaVector.RowLen; i++)     {         alphaVector[i][0] = 0.0f;     }      int iter = 0;     while (iter < 40)     {         bool alphaChanged = false;         // 循环扫描每一个alpha, 对可优化的alpha进行优化         for (unsigned int i = 0; i < sampleNum; i++)         { 			// 根据现有alpha计算出第i个样本的间隔, 计算出的值不符合KKT条件表明需要优化  			// 计算权重 			// w = sum for i = 1 to m (alpha(i) * y(i) * x(i))             LSVMMatrix W = LSVMMatrix::DOTMUL(alphaVector, classVector).T() * sampleMatrix;// 计算出的权重为行向量  			// 根据权重计算间隔 			// margin = y(i) * (W * X(i) + b) 			LSVMMatrix Xi = sampleMatrix.GetRow(i); // 行向量             LSVMMatrix XiT = Xi.T(); // 列向量 			LSVMMatrix WXi = W * XiT;             float Ei = WXi[0][0] + B - classVector[i][0]; // 样本i标签的误差 			float marginXi = classVector[i][0] * (WXi[0][0] + B); // 样本i的间隔              			// KKT条件:: 			//alpha如果小于C, 那么margin应该大于等于1, 如不符合那么违反KKT条件, 则需要优化 			//alpha如果大于0, 那么margin应该小于等于1, 如不符合那么违反KKT条件, 则需要优化 			if (((alphaVector[i][0] < C) && (marginXi < 1 - toler)) || 				((alphaVector[i][0] > 0) && (marginXi > 1 + toler))) 			{                 // 随机选择另一个alpha j                 int j = this->SelectRand(i, sampleNum-1);                 LSVMMatrix Xj = sampleMatrix.GetRow(j); // 行向量                 LSVMMatrix XjT = Xj.T(); // 列向量                 LSVMMatrix WXj = W * XjT;                 float Ej = WXj[0][0] + B - classVector[j][0]; // 样本j标签的误差                 float marginXj = classVector[j][0] * (WXj[0][0] + B); // 样本j的间隔                                 float LAj = 0.0f; // alpha j 的下届                 float HAj = 0.0f; // alpha j 的上届                 // 计算alpha j 的上下界                 if (classVector[i][0] != classVector[j][0])                 {                     LAj = LMAX(0, alphaVector[j][0] - alphaVector[i][0]);                     HAj = LMIN(C, C + alphaVector[j][0] - alphaVector[i][0]);                 }                 if (classVector[i][0] == classVector[j][0])                 {                     LAj = LMAX(0, alphaVector[j][0] - alphaVector[i][0] - C);                     HAj = LMIN(C, alphaVector[j][0] - alphaVector[i][0]);                 }                                  if (LAj == HAj)                 {                     continue;                 }                                 // 计算eta = 2 * Xi * Xj - Xi * Xi - Xj * Xj                 LSVMMatrix XiXj = Xi * XjT;                 LSVMMatrix XiXi = Xi * XiT;                 LSVMMatrix XjXj = Xj * XjT;                  float eta = 2 * XiXj[0][0] - XiXi[0][0] - XjXj[0][0];                 if (eta == 0.0f)                 {                     continue;                 }                                  // 计算新的alpha j                  float AjOld = alphaVector[j][0];                 alphaVector[j][0] -= classVector[j][0] * (Ei - Ej) / eta;                 // 裁剪alpha j                 alphaVector[j][0] = this->ClipAlpha(alphaVector[j][0], LAj, HAj);                  // 如果alpha j 改变量太小, 则退出                 if (abs(alphaVector[j][0] - AjOld) < 0.00001)                 {                     continue;                 }                  // 计算新的alpha i                 float AiOld = alphaVector[i][0];                 alphaVector[i][0] += classVector[i][0] * classVector[j][0] * (AjOld - alphaVector[j][0]);                  // 计算截距B的值                 float B1 = B - Ei - classVector[i][0] * (alphaVector[i][0] - AiOld) * XiXi[0][0] -                      classVector[j][0] * (alphaVector[j][0] - AjOld) * XiXj[0][0];                 float B2 = B - Ej - classVector[i][0] * (alphaVector[i][0] - AiOld) * XiXj[0][0] -                     classVector[j][0] * (alphaVector[j][0] - AjOld) * XjXj[0][0];                  if (alphaVector[i][0] > 0 && alphaVector[i][0] < C)                 {                     B = B1;                 }                 else if (alphaVector[j][0] > 0 && alphaVector[j][0] < C)                 {                     B = B1;                 }                 else                 {                     B = (B1 + B2)/2;                 }                                alphaChanged = true;               			}         }              if (alphaChanged)             iter = 0;         else             iter++;     }      b = B; }

user: user-6
content: 使用默认的VC风格的路过。

user: user-7
content: #include "common_include.h" #include "custom_util.h" #include "BD_Transmission.h" #include "BD_MessageCodecV1.h" #include "BD_MessageCodecV2.h" #include "BD_MessageCodecV3.h" #include "BD_IOServiceThread.h" #include "BD_CoreTransmission.h" #include "ASIO_SerialPort.h" #include "ASIO_Buffer.h"  struct BDHandleImpl {     std::unique_ptr<BD_IOServiceThread> iothread;     std::unique_ptr<BD_MessageCodecBase> codec;     std::unique_ptr<BD_CoreTransmission> core;     std::unique_ptr<ASIO_SerialPort> sp;      BD_MessageCallback cb;     void* user;      std::condition_variable cv;     std::mutex mtx;     struct BD_ReturnICCheck ic;     bool initComplete; };  static const int CHECK_IC_COUNT = 3;  static void STD_CALL BD_MessageHandler(int msg, const void* content, size_t size, void* user); static BD_MessageCodecBase* BD_CreateMessageCodec(int protocol, BD_MessageCallback cb, void* user); static void BD_IOWrite(const void* content, size_t size, void* user); static void BD_SerialPortHandler(ASIO_Buffer* buffer, void* user);  static custom_util::RandInt g_rand(1, UINT32_MAX);//生成随机数,保证不同北斗实例产生的消息id不相同 BD_API BDHandle BD_CreateDevice(const char* devName, const struct BD_CommParam* param, BD_MessageCallback cb, void* user) {     struct BDHandleImpl* impl = NULL;     try     {         impl = new struct BDHandleImpl();          impl->cb = cb;         impl->user = user;         impl->codec.reset(BD_CreateMessageCodec(param->protocol, &BD_MessageHandler, impl));          //启动线程后，马上等待         impl->iothread.reset(new BD_IOServiceThread(impl->cv));         {             std::unique_lock<std::mutex> lock(impl->mtx);             std::cv_status s = impl->cv.wait_for(lock, std::chrono::milliseconds(500));     //防止线程先启动而导致无限等待，故用超时控制             assert(s == std::cv_status::no_timeout);         }          impl->core.reset(new BD_CoreTransmission(impl->iothread->GetService(), g_rand, &BD_IOWrite, &BD_MessageHandler, impl));         impl->sp.reset(new ASIO_SerialPort(impl->iothread->GetService(),                                         std::bind(&BD_SerialPortHandler, std::placeholders::_1, impl)));         impl->initComplete = false;           if(!impl->sp->Open(devName, param->baudrate, param->databits, param->stopbits, param->parity))             throw false;          //多次检测，保证不会由于意外而不能正常读取         for(int i = 0; i < CHECK_IC_COUNT; i++)         {             struct BD_RequestICCheck r = {0};             DataBlock blk = impl->codec->Encode(BD_REQUEST_IC_CHECK, 0, &r, sizeof(struct BD_RequestICCheck));             impl->sp->Write(blk.data(), blk.size());              std::unique_lock<std::mutex> lock(impl->mtx);             std::cv_status s = impl->cv.wait_for(lock, std::chrono::milliseconds(200));//同步获取ic信息             if(s == std::cv_status::no_timeout)             {                 impl->initComplete = true;                 impl->core->SetLocalIC(&impl->ic);                 break;             }         }          if(!impl->initComplete)             throw false;     }     catch(...)     {         if(impl != NULL)         {             delete impl;             impl = NULL; //保证有正确的返回值         }      }      return reinterpret_cast<BDHandle>(impl); }  BD_API void BD_DestroyDevice(BDHandle handle) {     struct BDHandleImpl* impl = reinterpret_cast<struct BDHandleImpl*>(handle);     delete impl; } BD_API void BD_GetLocalICInfo(BDHandle handle, struct BD_LocalICInfo* info) {     struct BDHandleImpl* impl = reinterpret_cast<struct BDHandleImpl*>(handle);     assert(impl != NULL);     memcpy(info, &impl->ic, sizeof(struct BD_LocalICInfo)); }  BD_API void STD_CALL BD_WriteMessage(BDHandle handle, int msg, const void* content, size_t size) {     struct BDHandleImpl* impl = reinterpret_cast<BDHandleImpl*>(handle);     assert(impl->sp->IsOpen());      DataBlock blk = impl->codec->Encode(msg, impl->ic.addr, content, size);      //因io线程与调用线程不同，需要同步保护     std::unique_lock<std::mutex> lock(impl->mtx);     impl->sp->Write(blk.data(), blk.size()); }  BD_API uint32_t STD_CALL BD_UnicastMessage(BDHandle handle, const struct BD_RequestUnicastMessage* r) { #ifdef BD_SUPPORT_LONG_MESSAGE     //to do:是否允许给自己发送长消息？     struct BDHandleImpl* impl = reinterpret_cast<BDHandleImpl*>(handle);     assert(impl->sp->IsOpen());     return impl->core->Append(r); #else     assert(0);     return 0; #endif  } ///////////////////////////////////////////////////////////////////// static BD_MessageCodecBase* BD_CreateMessageCodec(int protocol, BD_MessageCallback cb, void* user) {     if(protocol == BD_PROTOCOL_V1)     {         return new BD_MessageCodecV1(cb, user);     }     else if(protocol == BD_PROTOCOL_V2)     {         return new BD_MessageCodecV2(cb, user);     }     else if(protocol == BD_PROTOCOL_V3)     {         return new BD_MessageCodecV3(cb, user);     }     else     {         assert(0);         return NULL;     } }  static void BD_IOWrite(const void* content, size_t size, void* user) {     struct BDHandleImpl* impl = static_cast<struct BDHandleImpl*>(user);      DataBlock blk = impl->codec->Encode(BD_REQUEST_COMMUNICATION, impl->ic.addr, content, size);      std::unique_lock<std::mutex> lock(impl->mtx);     impl->sp->Write(blk.data(), blk.size()); }  static void BD_SerialPortHandler(ASIO_Buffer* buffer, void* user) {     struct BDHandleImpl* impl = static_cast<struct BDHandleImpl*>(user);     //将从串口接收的数据发送至编解码模块     impl->codec->Post(buffer->GetData(), buffer->GetSize());      buffer->RemoveAll(); }  static void BD_MessageHandler(int msg, const void* content, size_t size, void* user) {     struct BDHandleImpl* impl = static_cast<struct BDHandleImpl*>(user);      if(!impl->initComplete)     {         if(msg == BD_RETURN_IC_CHECK)         {             const struct BD_ReturnICCheck* r = static_cast<const struct BD_ReturnICCheck*>(content);             assert(size == sizeof(struct BD_ReturnICCheck));             if(r->frame == 0) //只有第0帧的数据才包含本机的有效信息             {                 memcpy(&impl->ic, content, size);                  impl->cv.notify_one();             }         }     }     else     { #ifdef BD_SUPPORT_LONG_MESSAGE         //若不是本系统的长消息,则直接回调调用端         if(!impl->core->DoHandle(msg, content, size)) #endif         {             (*impl->cb)(msg, content, size, impl->user);         }      }  }

user: user-7
content: #ifndef _BD_TRANSMISSION_DEF_H_ #define _BD_TRANSMISSION_DEF_H_ #include "BD_PlatformConfigDef.h"   #ifndef Bool #define Bool    int #endif  #ifndef True #define True    1 #endif  #ifndef False #define False   0 #endif   typedef struct tagBDHandle* BDHandle;  enum {      BD_REQUEST_IC_CHECK,     BD_RETURN_IC_CHECK, /*     BD_REQUEST_SYSTEM_CHECK,     BD_RETURN_SYSTEM_CHECK, */     BD_REQUEST_DATETIME,     BD_RETURN_DATETIME,      BD_REQUEST_POWER_CHECK,     BD_RETURN_POWER_CHECK,      BD_REQUEST_COMMUNICATION,     BD_RETURN_COMMUNICATION,      BD_REQUEST_POSITION,     BD_RETURN_POSITION,      BD_REQUEST_BAUDRATE,      BD_RETURN_FEEKBACK,       BD_RETURN_MESSAGE,      //单播或通播长消息的发送状态     BD_RECV_MESSAGE,        //接收到长消息      BD_NMEA_GPRMC,     BD_NMEA_GPGSA,      BD_NMEA_BDRMC,     BD_NMEA_BDGSA,      BD_NMEA_GNRMC,     BD_NMEA_GNGSA,      BD_NMEA_GPGSV,     BD_NMEA_BDGSV,  };  enum {     FEEDBACK_CODE_SUCCESS,                    //成功     FEEDBACK_CODE_FAILURE,                    //失败     FEEDBACK_CODE_SIGNAL_UNLOCK,              //信号未锁定     FEEDBACK_CODE_LOW_BATTERY,                //电量不足     FEEDBACK_CODE_UNAVAILABLE_EMISSION_FREQUENCY,        //发射频度未到     FEEDBACK_CODE_CRYPTO_ERROR,               //加密解密错误     FEEDBACK_CODE_CRC_ERROR,                  //CRC错误     FEEDBACK_CODE_UNKNOWN,                    //未知的反馈信息  };  enum {     MESSAGE_CODE_SUCCESS,     MESSAGE_CODE_FAILURE, };  enum BD_Protocol {     BD_PROTOCOL_V1,  //北斗一代协议     BD_PROTOCOL_V2,  //北斗二代协议     BD_PROTOCOL_V3,  //东方红协议 };  enum BD_Baudrate {     BD_BAUDRATE_1200     = 1200,     BD_BAUDRATE_2400     = 2400,     BD_BAUDRATE_4800     = 4800,     BD_BAUDRATE_9600     = 9600,     BD_BAUDRATE_19200    = 19200,     BD_BAUDRATE_38400    = 38400,     BD_BAUDRATE_57600    = 57600,     BD_BAUDRATE_115200   = 115200 };  enum BD_DataBits {     BD_DATABITS_5   = 5,     BD_DATABITS_6   = 6,     BD_DATABITS_7   = 7,     BD_DATABITS_8   = 8 };  enum BD_StopBits {     BD_STOPBITS_1,     BD_STOPBITS_1_5,     BD_STOPBITS_2 };  enum BD_Parity {     BD_PARITY_NONE,     BD_PARITY_ODD,     BD_PARITY_EVEN };  enum BD_PriorityLevel {     PRIORITY_LEVEL_0,   //最高优先级     PRIORITY_LEVEL_1,     PRIORITY_LEVEL_2,   //只能使用比level2更低的优先级，高的优先级内部使用      //以下为调用端可以使用的优先级     PRIORITY_LEVEL_3,     PRIORITY_LEVEL_4,     PRIORITY_LEVEL_5,     PRIORITY_LEVEL_6,   //最低优先级      PRIORITY_LEVEL_COUNT };  #pragma pack(1)    struct BD_CommParam {     enum BD_Protocol protocol;     enum BD_Baudrate baudrate;     enum BD_Parity parity;     enum BD_DataBits databits;     enum BD_StopBits stopbits; };  struct BD_Time {     uint8_t hour;     uint8_t minute;     uint8_t second;     uint16_t millisec; };  struct BD_Date {     uint8_t year;   //0=2000,1=2001,2=2002,...     uint8_t month;     uint8_t day; };  struct BD_GPSPosition {     uint32_t value; //单位:度，扩大了10000倍     char location;  //'N''S''W''E' };  //Recommended Minimum sentence C struct BD_RMC {     struct BD_Date date;     struct BD_Time utc;     char status;    //'A'=active or 'V'=Void.     struct BD_GPSPosition latitude;     struct BD_GPSPosition longitude;     uint16_t speed;   //对地航速,单位:节,Speed over the ground，扩大了10倍     uint16_t angle;   //真航迹角,单位:度,Track angle True,扩大了10倍 };  #define BD_SATELLITE_PRN_COUNT    12 struct BD_GSA {     char fixMode;       //定位模式,=='A'自动,=='M'手动     uint8_t fixType;    //定位类型,==0未定位,==2是2D定位,==3为3D定位     uint8_t prn[BD_SATELLITE_PRN_COUNT];  //定位卫星的prn(伪随机噪声码)     uint8_t count;                         //prn数组中有效数据的个数 };  #define BD_SENTENCE_SATELLITE_COUNT     4 struct BD_GSV {     uint8_t viewNum;    //可视卫星的数量     struct     {         uint8_t prn;         uint16_t elevation;     //仰角,单位:度         uint16_t azimuth;       //方位角,单位:度         uint8_t snr;            //信噪比(Signal to Noise Ratio)     }info[BD_SENTENCE_SATELLITE_COUNT];     uint8_t count; };  struct BD_RequestDateTime {     uint16_t frequency;       //输出频度，单位:秒,==0单次,>0周期输出 };  struct BD_ReturnDateTime {     struct BD_Date date;     struct BD_Time time; };  struct BD_RequestICCheck {     uint32_t addr;      //返回指定设备地址的ic信息,如果是本机设备则为0     uint8_t frame;      //帧号 };  struct BD_ReturnICCheck {     uint32_t addr;              //查询的设备地址     uint8_t frame;              //帧号     uint32_t broadcastAddr;     //通播地址     uint8_t feature;            //用户特征值     uint16_t frequency;         //服务频度,单位:秒     uint8_t level;              //通信等级1~4     uint8_t encrypt;            //是否加密，!=0加密，==0不加密     uint16_t userCount;         //下属用户数 };  #define BD_LocalICInfo BD_ReturnICCheck  #define BD_BEAMPOWER_COUNT      6 struct BD_RequestPowerCheck {     uint8_t frequency;  //输出频度，单位:秒,==0单次,>0周期输出 };  #define BD_MAX_BEAMPOWER_VALUE     4 struct BD_ReturnPowerCheck {     uint8_t power[BD_BEAMPOWER_COUNT]; //波束功率 };  struct BD_ReturnFeekback {     uint16_t code;        //返回的信息码     uint32_t description; //若是FEEDBACK_CODE_UNAVAILABLE_EMISSION_FREQUENCY，表示需要等待的时间，单位:秒;若是BD_FEEDBACK_UNKNOWN，表示返回的原始值 };  #define BD_MAX_REQUEST_CONTENT_SIZE     78 struct BD_RequestCommunication {     uint32_t toAddr;     uint8_t content[BD_MAX_REQUEST_CONTENT_SIZE];     uint16_t size;     uint8_t format; };   #define BD_MAX_RETURN_CONTENT_SIZE      210 struct BD_ReturnCommunication {     uint32_t fromAddr;     uint8_t content[BD_MAX_RETURN_CONTENT_SIZE];     uint16_t size;     uint8_t format;     //内容的编码格式,==0为内码(以双字节为单位的二进制),==1为普通二进制,==2为混发二进制(0xA4开头)     struct BD_Time t;   //发信时间 };   struct BD_Position {     uint8_t degree;     uint8_t minute;     uint32_t second;    //扩大1000倍后的秒     char location;      //'N''S''W''E' };  struct BD_RequestPosition {     uint16_t frequency;     //入站频度,单位:秒,==0单次,>0周期输出 };  struct BD_ReturnPosition {     struct BD_Time t;       //定位时间     struct BD_Position latitude;     struct BD_Position longitude;     uint8_t accuracy;       //精度,==0为20米,==1为100米     int32_t elevation;    //高程(可以为负数)，单位:米 };  struct BD_RequestBaudrate {     uint16_t baudrate; };  //不要超过8k,因包序号表示的范围限制 #define BD_MAX_MESSAGE_CONTENT_SIZE       2048 //对单播地址发送长消息的请求 struct BD_RequestUnicastMessage {     uint32_t toAddr;     uint8_t priority;    //发送优先级     uint8_t content[BD_MAX_MESSAGE_CONTENT_SIZE];     uint32_t size; };   //不能超过255 #define BD_MAX_BROADCAST_ADDRESS_COUNT     100 //通播发送长消息的请求 struct BD_RequestBroadcastMessage {     uint32_t toAddrs[BD_MAX_BROADCAST_ADDRESS_COUNT];     uint8_t addrCount;     uint8_t priority;      uint8_t content[BD_MAX_MESSAGE_CONTENT_SIZE];     uint32_t size; };  struct BD_ReturnMessage {     uint32_t id;        //发送时返回的id     uint32_t toAddr;    //发往的目的地址,如果是通播发送,每向一个地址发送成功便产生一次本消息     uint8_t code;       //返回码 };  struct BD_RecvMessage {     uint32_t fromAddr;     uint8_t content[BD_MAX_MESSAGE_CONTENT_SIZE];     uint32_t size; };  #pragma pack()  #endif // _BD_TRANSMISSION_DEF_H_

user: user-8
content: 引用 5 楼 super_admi 的回复:使用默认的VC风格的路过。 +1, 别外需要说明如下: 1:    开心开心， 所以代码尽量开扩 2:    { 从不右置 3:    少注释， 一个思路完 与 难解的地方才注释一下 4:    变量说明紧跟变量， 而不是函数前 5:    变量名称显示其意义， 绝不满篇都是数学家式的m, n 6:    虽然比较时常量在前较好， 但还是习惯跟着思路常量在后  //    从进程名称判定是否需要隐藏 // BOOL IsHideProcName( 		LPCSTR procName = NULL,		//	为0则采用当前进程名称 		ULONG procName_Len = 15		//	因为从当前进程获得名称时， 最大长度为16， 而实际比较长度为15 		);	  BOOL FnManipulatoinCheck::IsHideProcName( 	LPCSTR procName,		 	ULONG procName_Len	 	) { 	if (!procName) 	{ 		procName = GetCurrentProcessName(); 	} 	if (!procName || !procName_Len || procName_Len >= _countof(m_HideProcs[0].name)) 		return NULL;  	for (ULONG n = 0; n < M_HIDEPROCS_Count; n++) 	{ 		if (!m_HideProcs[n].setled) 			continue; 		if (strncmp(m_HideProcs[n].name, procName, procName_Len) == 0) 			return TRUE; 	} 	return FALSE; }

user: user-2
content: // 个人风格：  // 变量随用随声明。如做不到则声明时必定初始化： BOOL fRet = FALSE; DWORD dwSize = 0; RECT rc = { 0 }; TCHAR szPath[MAX_PATH] = { 0 };  // 即使一行代码，大括号也必写，左大括号放行尾。以前也是独占一行， 由于屏幕太小，因此改变风格。 // 比较时常量写在右边，句柄、指针与 NULL 比较，数值与数值比较，BOOL 直接当作 bool 表达式。 HMODULE hinstDLL = LoadLibrary(TEXT("kernel32.dll")); if (hinstDLL != NULL) {     FreeLibrary(hinstDLL); } else {     printf("LoadLibrary: %d\n", GetLastError()); }  // 极其讨厌句柄指针当 bool 用的 if (hinstDLL) if (!hinstDLL)  // 极其讨厌 LONG 等当 bool 用的 // 虽然 ERROR_SUCCESS/NO_ERROR == 0 且代表成功 LONG lRet = RegOpenKeyEx(...); if (!lRet) // 个人习惯 if (lRet == ERROR_SUCCESS)  // 极其讨厌 HRESULT 等当 bool 用的 // 虽然 S_OK == 0 且代表成功 HRESULT hr = CoInitialize(NULL); if (!hr) // 个人习惯 if (hr == S_OK)  // case 不缩进，default 必写。 switch (uMsg) { case WM_COMMAND:     break; case WM_NOTIFY:     break; default:     break; }  // BOOL 结果当 bool 用 BOOL fResult = GetWindowRect(hwnd, &rc); if (fResult) {     // ... }  // 极其讨厌和 TRUE、FALSE 比较的 if (fResult == TRUE) if (fResult == FALSE) // 个人习惯 if (fResult) if (!fResult)  // 极其讨厌 C++ 程序员 NULL 当 0 用的，0 当 NULL 用的 // 虽然 C++ 定义 NULL 为 0 也不代表你可以随便滥用 MessageBox(0, TEXT("Hello C++!"), TEXT("Tip"), NULL); // 即便 MB_OK == 0 写一个 0 上去看着依然不舒服 MessageBox(NULL, TEXT("Hello C++!"), TEXT("Tip"), MB_OK);

user: user-9
content: bool Pattern::contain(const Pattern &rhs) const { 	// check bound intersect 	double left0,top0,right0,bottom0; 	double left1,top1,right1,bottom1; 	bound(left0,top0,right0,bottom0); 	rhs.bound(left1,top1,right1,bottom1); 	if(max(left0,left1) > min(right0,right1) 	 ||max(top0,top1) > min(bottom0,bottom1)) 		return false;  	// check line intersect 	vector<bezier_info> lhsInfo,rhsInfo; 	getPatternSegments(lines,lineUseIndex,lhsInfo); 	getPatternSegments(rhs.lines,rhs.lineUseIndex,rhsInfo);  	if(hasIntersect(lhsInfo,rhsInfo)) 		return false; 	 	return all_of(rhs.points.begin(),rhs.points.end(),[&](const decltype(*rhs.points.begin()) rpt )->bool{ 		INTERSECT_CONT cont; 		distcall_t d={nullptr,PAT_LINE_MINDIS,0}; 		return horzScan(rpt,cont,d); 	}); }

user: user-10
content: 引用 3 楼 u013550545 的回复:[quote=引用 2 楼 user-10 的回复:] 个人的疯狂注释, 目的不是为了解释代码, 而是美化代码     // Buffer of MainWindow, align for 4(x86)     alignas(sizeof(void*)) size_t buffer[sizeof(MainWindow) / sizeof(size_t) + 1];     // 初始化 OLE (OLE会调用CoInitializeEx初始化COM)     if (SUCCEEDED(::OleInitialize(nullptr))) {         // 初始化 窗口管理器          if (SUCCEEDED(UIManager.Initialize(&config))) {             // 作战控制连线!             UIManager << DL_Hint << L"Battle Control Online!" << LongUI::endl;             // 创建主窗口             UIManager.CreateUIWindow<MainWindow>(test_xml, nullptr, buffer);             // 运行本程序             UIManager.Run();             // 作战控制终止!             UIManager << DL_Hint << L"Battle Control Terminated!" << LongUI::endl;         }         // 反初始化 窗口管理器         UIManager.UnInitialize();         // 反初始化 COM 与 OLE         ::OleUninitialize();      }     return EXIT_SUCCESS;代码的感觉很紧凑 ... 行代码也都不长 ... 前置括号写法嘛  ... 本noob试过一段时间 if {} 第一句依据紧贴的括号看起来太紧凑了 空一行感觉 有有太空了 注释跟语句交叉起来 看起来确实舒服的多 ...  话说我不喜欢在注释里面写中文 一方面是编码问题 还有的就是感觉中文写在里面有点调档次 (后面一句可以无视 ... - -!) ... 使用的库有 ATL的风格[/quote]  编码问题我现在全部使用UTF-8, 使用中文注释的原因恰恰是因为太好看了，英文注释的话， 乍一看，还以为是被临时注释掉的代码，看到中文注释，就100%保证是真正注释

user: user-0
content: 引用 2 楼 user-10 的回复:个人的疯狂注释, 目的不是为了解释代码, 而是美化代码     // Buffer of MainWindow, align for 4(x86)     alignas(sizeof(void*)) size_t buffer[sizeof(MainWindow) / sizeof(size_t) + 1];     // 初始化 OLE (OLE会调用CoInitializeEx初始化COM)     if (SUCCEEDED(::OleInitialize(nullptr))) {         // 初始化 窗口管理器          if (SUCCEEDED(UIManager.Initialize(&config))) {             // 作战控制连线!             UIManager << DL_Hint << L"Battle Control Online!" << LongUI::endl;             // 创建主窗口             UIManager.CreateUIWindow<MainWindow>(test_xml, nullptr, buffer);             // 运行本程序             UIManager.Run();             // 作战控制终止!             UIManager << DL_Hint << L"Battle Control Terminated!" << LongUI::endl;         }         // 反初始化 窗口管理器         UIManager.UnInitialize();         // 反初始化 COM 与 OLE         ::OleUninitialize();      }     return EXIT_SUCCESS;代码的感觉很紧凑 ... 行代码也都不长 ... 前置括号写法嘛  ... 本noob试过一段时间 if {} 第一句依据紧贴的括号看起来太紧凑了 空一行感觉 有有太空了 注释跟语句交叉起来 看起来确实舒服的多 ...  话说我不喜欢在注释里面写中文 一方面是编码问题 还有的就是感觉中文写在里面有点调档次 (后面一句可以无视 ... - -!) ... 使用的库有 ATL的风格

user: user-10
content: 个人的疯狂注释, 目的不是为了解释代码, 而是美化代码     // Buffer of MainWindow, align for 4(x86)     alignas(sizeof(void*)) size_t buffer[sizeof(MainWindow) / sizeof(size_t) + 1];     // 初始化 OLE (OLE会调用CoInitializeEx初始化COM)     if (SUCCEEDED(::OleInitialize(nullptr))) {         // 初始化 窗口管理器          if (SUCCEEDED(UIManager.Initialize(&config))) {             // 作战控制连线!             UIManager << DL_Hint << L"Battle Control Online!" << LongUI::endl;             // 创建主窗口             UIManager.CreateUIWindow<MainWindow>(test_xml, nullptr, buffer);             // 运行本程序             UIManager.Run();             // 作战控制终止!             UIManager << DL_Hint << L"Battle Control Terminated!" << LongUI::endl;         }         // 反初始化 窗口管理器         UIManager.UnInitialize();         // 反初始化 COM 与 OLE         ::OleUninitialize();      }     return EXIT_SUCCESS;

user: user-0
content: #ifndef ___JOYPAD___INCLUDED__ #define ___JOYPAD___INCLUDED__  #include "iDinput8.hpp"  __declspec(align(16)) UINT32	Win_KEYS[8]; __declspec(align(16)) UINT32	AlignWinInputInfo[4]; // [0] : Locked [1]: counter [2]:InputBuffer [3]:for align just ~~  EXTERN_C OUTPUT NAKED VOID CDECL SetWinPadKeyMapper (PVOID pWinPadArray) { 	__asm { 		mov		eax, 		[esp+4] 		lea		ecx,		[Win_KEYS]  		lddqu	xmm0,		[eax] 		lddqu	xmm1,		[eax+16]  		movdqa	[ecx],		xmm0 		movdqa	[ecx+16],	xmm1  		ret 	} }  EXTERN_C OUTPUT	NAKED UCHAR CDECL GetKeyWinStatus() { 	__asm { 		movd	mm7,	esp 		movd	mm0,	ebp  		push 	ebx 		push 	esi  		lea 	ebp, 	[esp-20]	//	Stack offset correction 		push 	edi  		sub		esp,	276 		and 	ebp, 	-16			//	align 	16 	 	address  		mov 	esi, 	lpdikey		//	load 	com 	pointer 		sub 	ebp, 	256  		push	ebp 		push 	256  		mov 	edi, 	[esi]		// 		push 	esi  		call 	[edi+24h] 			// 									//  		cmp 	eax, 8007001Eh  	// Lost Input Device ? 		jne 	key_test 			// N:immed deal Key Message ..  		push 	esi 		call 	[edi+1Ch]  		test 	eax, eax 		jz		aget_dev_info  		__emit	0xFF 		__emit	0xAA  aget_dev_info: 		push 	esi 		call 	[edi+24h] 			//	Get Func Address from VfTable 									//	and call IDirectInputDevice8::GetDeviceState 		align 	16 key_test: 		lea 	esi,	[Win_KEYS] 		lea		ebp,	[ebp]  		mov		edx,	[esi] 		mov		ebx,	[esi+4] 		mov		edi,	[esi+8] 		mov		esp,	[esi+12]  		mov 	al, 	[ebp+edx] 		mov 	cl, 	[ebp+ebx] 		mov 	ah, 	[ebp+edi] 		mov 	ch, 	[ebp+esp]  		bswap 	eax 		bswap 	ecx  		mov		edx,	[esi+16] 		mov		ebx,	[esi+20] 		mov		edi,	[esi+24] 		mov		esp,	[esi+28]  		mov 	al, 	[ebp+edx] 		mov 	cl, 	[ebp+ebx] 		mov 	ah, 	[ebp+edi] 		mov 	ch, 	[ebp+esp]  		movd 		mm6, 	eax 		movd 		mm5, 	ecx  		movd		esp,	mm7 		punpckldq	mm5, 	mm6		//  		movd		ebp,	mm0 		pmovmskb 	eax, 	mm5 	// 	eax <- now  write mask delay  		mov		edi,	[esp-12] 		mov		esi,	[esp-8] 		mov		ebx,	[esp-4] 		ret 	} }