Time of Update: 2018-12-04
11.1 使用const提高函數的健壯性看到const關鍵字,C++程式員首先想到的可能是const常量。這可不是良好的條件反射。如果只知道用const定義常量,那麼相當於把火藥僅用於製作鞭炮。const更大的魅力是它可以修飾函數的參數、傳回值,甚至函數的定義體。const是constant的縮寫,“恒定不變”的意思。被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。所以很多C++程式設計書籍建議:“Use const whenever you need”。 11.1
Time of Update: 2018-12-04
高通SDK裡面教我們建立工程的方式預設是使用C語言,不過有時候使用C++會比較方便,本文介紹怎麼在BREW裡搭建一個C++的架構。 1、 首先按照高通的方法建立一個工程,暫時命名為“test”,這樣在產生的工程下會自動產生“test.c”檔案。 2、 建立一個工程標頭檔,命名為“test.h”,裡面實現一個類TestCpp,代碼如下:class TestCpp: public AEEApplet //類必須繼承自AEEApplet{public: static
Time of Update: 2018-12-04
//Author:smilelance//From:http://blog.csdn.net/smilelanceusing UnityEngine;using System.Collections;using System.Net;using System.Net.Sockets;using System.Text;using System;public class UdpConnection {private static UdpConnection instance;private
Time of Update: 2018-12-04
//Author:smilelance//From:http://blog.csdn.net/smilelance//轉換C#代碼:using System.Runtime.InteropServices;//結構體轉換成位元組流public static byte[] StructToBytes<T>(T obj) {int size = Marshal.SizeOf(typeof(T)); IntPtr bufferPtr = Marshal.AllocHGlobal(
Time of Update: 2018-12-04
linux下面串口工具C-kermit C-kermit是一款整合了網路通訊、串口通訊的工具,它有如下多種功能1.支援kermit檔案傳輸通訊協定2.自訂了一種指令碼語言,它強大而便於使用,可用於自動化工作3.無論是網路通訊,還是串口通訊,操作是一致的,並支援多種硬體、軟體平台4.有安全認證、加密功能5.內建FTP、HTTP用戶端功能及ssh介面6.支援字元集轉換介紹在ubuntu8.0.4下安裝、使用c-kermit的方法確保ubuntu能串連上網路,使用一下命令就安裝,sudo
Time of Update: 2018-12-04
常見C/C++ XML解析器有tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,這些解析器有些是支援多語言的,有些只是單純C/C++的。如果你是第一次接觸到XML解析,那麼關於XML解析器的選擇問題的確令人頭疼,我們先看一下這些解析器有哪些特點。一、Xerces
Time of Update: 2018-12-04
List<SendMessage> sendingMessages = null;if(sendingMessages !=null && sendingMessages.Count > 0){// Debug.Log("current in sending msg: " + sendingMessages.Count);for(int i=0; i<sendingMessages.Count; i++){// Debug.Log("msg time: "
Time of Update: 2018-12-04
Why C++ Is Not “Back”又引起了爭論,主要觀點是:C++ is the wrong direction for the future, C++對於未來是一個錯誤方向,大意翻譯如下:最大問題是語言應該越來越簡單,抽象層次越來越高,而不是減少。(banq註:領域驅動分層關係的疑惑)當然總是會有需要低層級的代碼,但我們今天寫的代碼的大部分是在一個更高的水平。我是許多年前跳下C++這條船,我終於可以再也不用糾結C++比C#快上面了。很長時間,我依然相信過去所有對C++的投入都沒有白費,
Time of Update: 2018-12-04
本部落格(http://blog.csdn.net/livelylittlefish)貼出作者(三二一@小魚)相關研究、學習內容所做的筆記,歡迎廣大朋友指正! 1. 宏定義 #define ASPECT_RATIO
Time of Update: 2018-12-04
面試題總結 - C 語言 - 指標 1. 嵌入式系統經常具有要求程式員去訪問某特定的記憶體位置的特點。 在某工程中,要求設定一據對地址為0x67a9的整形變數的值為0xaa66,編譯器是一個純粹的ANSI編譯器寫帶碼去完成這一任務。注釋: 這一問題測試你是否知道為了訪問一個絕對位址,把一個整形數強制轉換(ypecast) 為一個指標是合法的,answer: int* ptr;ptr = (int*) 0x67a9;*ptr = 0xaa66;一個較晦澀的方法是:*(int* const) (
Time of Update: 2018-12-04
如何用C 語言開發DSP 嵌入式系統肖宛昂 曾為民Xiao,Wanang Ceng,Weimin(華東交通大學) 肖宛昂曾為民摘要目前很多嵌入式系統以 DSP 為核心構建,但是,採用組合語言開發DSP 系統存在開發難度大、開發週期長、維護性差等缺點,應用C 語言開發DSP 系統是廣大嵌入式開發人員的迫切要求。有關單片機的C 語言開發有相當多的資料可以參考,而DSP 系統的C 語言開發卻很少見。本文以TI 公司的DSP 器件TMS320F24X 系列為例,講述怎樣用C 語言開發一個完整的DSP
Time of Update: 2018-12-04
#ifdef __cplusplus extern "C" { #endif //一段代碼 #ifdef __cplusplus } #endif 這樣的代碼到底是什麼意思呢?首先,__cplusplus是cpp中的自訂宏,那麼定義了這個宏的話表示這是一段cpp的代碼,也就是說,上面的代碼的含義是:如果這是一段cpp的代碼,那麼加入extern "C"{和}處理其中的代碼。 要明白為何使用extern
Time of Update: 2018-12-04
1. 用預先處理指令#define 聲明一個常數,用以表明1年中有多少秒(忽略閏年的問題)answer: SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL注釋: 我這裡想看到幾件事情:1, #define
Time of Update: 2018-12-04
在C語言程式中加入一些編譯預先處理命令可以提高編程效率,回憶編譯速度。預先處理命令是在編譯來源程式前先對來源程式進行處理,例如,在程式中使用“#defineMAX 256“這條命令定義一個符號常量MAX,則在預先處理時將程式中出現的所有MAX替換為256。預先處理完成後,編譯器(如gcc)開始編譯來源程式以產生可執行代碼。需要注意的是,預先處理命令並不是C語言的一部分,因此每條編譯預先處理命令不需要以分號來結束。 一、宏定義
Time of Update: 2018-12-04
1. 下面的代碼輸出是什麼,為什嗎?void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6) puts("> 6") : puts("<= 6"); } 這個問題測試你是否懂得C語言中的整數自動轉換原則,我發現有些開發人員懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是“>6”。原因
Time of Update: 2018-12-04
1. 嵌入式系統總是要使用者對變數或寄存器進行位**作。給定一個整型變數a,寫兩段代**,第一個設定a的bit 3,第二個清除a 的bit3。在以上兩個**作中,要保持其它位不變。對這個問題有三種基本的反應 1). 不知道如何下手。該被面者從沒做過任何嵌入式系統的工作。 2). 用bit fields。Bit
Time of Update: 2018-12-04
指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址。 要搞清一個指標需要搞清指標的四方面的內容:指標的類型,指標所指向的 類型,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。 先聲明幾個指標放著做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4]; 指標的類型
Time of Update: 2018-12-04
在最近的項目中,我們涉及到了“記憶體對齊”技術。對於大部分程式員來說,“記憶體對齊”對他們來說都應該是“透明的”。“記憶體對齊”應該是編譯器的 “管轄範圍”。編譯器為程式中的每個“資料單元”安排在適當的位置上。但是C語言的一個特點就是太靈活,太強大,它允許你幹預“記憶體對齊”。如果你想瞭解 更加底層的秘密,“記憶體對齊”對你就不應該再透明了。一、記憶體對齊的原因大部分的參考資料都是如是說的:1、平台原因(移植原因):不是所有的硬體平台都能訪問任意地址上的任意資料
Time of Update: 2018-12-04
1. 關鍵字Static的作用是什嗎?answer: 這個簡單的問題很少有人能回答完全,在C語言中,關鍵字static 有三個明顯的作用:1, 在函數體,一個被聲明為靜態變數在這一函數被調用的過程中其值不變。2, 在模組內(但在函數體外),一個被聲明為靜態變數可以被模組內的所有函數訪問,但不能被模組外地其他函數訪問,因為他是一個本地的全域變數。3,在模組內,一個被聲明為靜態函數只可被這一模組內的其他函數調用,那即是,這個函數被定義在聲明它的模組的本地範圍內使用。2.
Time of Update: 2018-12-04
1.用變數a給出下面的定義a) an integerint a;b) a pointer to an integerint *a; c) a pointer to a pointer to an integerint **a;d) an array of 10 integersint a[10];e) an array of 10 pointers to integersint* a[10]; f) a pointer to an array of 10 integersint (*a)[10]