Time of Update: 2018-12-05
前天,我和以前公司的幾個同事在一起聚餐。其中一位同事在對自己未來的打算時,說可能會回到杭州繼續寫代碼。我聽了之後,說:如果對技術不感興趣,還是趁早離開這個行業。寫代碼的辛苦程度不是一般人能承受的。 下文
Time of Update: 2018-12-05
講一點和實現細節相關的東西。在Visual C++中,所有在main之前執行的函數調用實際上都通過一個自動產生的函數來調用,比如下面這段代碼:int func(){ return 1;}int data = func();int main(){ return 0;}實際上產生了三個函數:?func@@YAHXZ,對應於 func_main 對應於 main_$E1 對應於 data=func() 這句指派陳述式。它調用了 func,並且完成賦值這個操作。竅門在於,VC將
Time of Update: 2018-12-05
C++的用場 Bjarne Stroustrup清晰地回答了這個問題。以下文字摘編自D&E簡體中文版《C++語言的設計和演化》。 在以下領域,C++有著根本性的優勢:低級系統程式設計、進階系統程式設計、嵌入式程式設計、數值科學計算、通用程式設計以及混合系統設計等等。讓我們略微展開描述一下: 1. 低級系統程式設計:C++是迄今為止最好的低級程式設計語言。 2.
Time of Update: 2018-12-05
學習了下“落鶴生”的Native
Time of Update: 2018-12-05
初始C語言中的opaque類型:http://blog.csdn.net/xgbing/article/details/2775426GCC中運用枚舉定義數組的執行個體:http://blog.csdn.net/xgbing/article/details/6564979#include <stdio.h>#include <stdlib.h>#define u32 unsigned intenum uaddr { MTD_UADDR_NOT_SUPPORTED = 0
Time of Update: 2018-12-05
以下三個函數定義為標頭檔memory中,下面是其可能的實際代碼。代碼來源於《The C++ Standard Library》namespace std{template<class ForwIter,class T>void uninitialized_fill(ForwIter beg,ForwIter end, const T& value){typedef typename iterator_traits<ForwIter>::value_type VT;
Time of Update: 2018-12-05
今天在看《Windows核心編程》第四章,其中我感興趣的是關於啟動函數的描述。啟動函數的用途如下:1,擷取指向新進程的完整命令列的一個指標;2,擷取指向新進程的環境變數的一個指標;3,初始化C/C++運行庫的全域變數4,初始化所有全域和靜態C++類對象的建構函式。對於一個程式而言,在執行main函數之前會執行crtexe.c檔案中mainCRTStartup或wmainCRTStartup函數,如下所示:#ifdef WPRFLAGint wmainCRTStartup(#else /*
Time of Update: 2018-12-05
發信人: RoachCock (窮鬼), 信區: Programming 標 題: .net中的 delegate的標準C++類比 發信站: BBS 水木清華站 (Mon Mar 18 21:11:30 2002) 用模板的偏特化和成員模板,重載函數調用運算子成功的實現了delegate,既可以綁定普通函數,也可以綁定對象及其成員函數在cygnuwin下編譯通過, 還不支援一個delegate包含多個函數的用法,不過相信很簡單,從std::list派生一個類 就可以了
Time of Update: 2018-12-05
當然不是自己解碼的,不過有神人這麼做:http://hi.baidu.com/avengine/blog/item/9b7147a94c78c4fc1e17a2f7.html還有這個http://sourceforge.net/projects/php-ms-demangle/是抄的 wine 的。搞這個是為瞭解決 gcc typeinfo::name 返回的不是原始名字的問題。gcc 輸出:St6vectorISsSaISsEEstd::vector<std::string, std::
Time of Update: 2018-12-05
本人對於Android中使用的C庫比較感興趣,畢竟是整個android基本庫,所以一一在這裡記錄一下每一個的作用。aesbluetooth : 藍芽協議棧,官網<http://www.bluez.org/>dhcpcd : dpkg 配置包,官網<http://roy.marples.name/projects/dhcpcd>embunit : 一個嵌入式的單元測試工具。freetype : linux上廣為使用的字型解析庫。iptables :
Time of Update: 2018-12-05
符合ANSI的預定義宏:__DATE__:表示當前源檔案編譯時間的日期,格式為:月/天/年(Mmm dd yyyy)。__FILE__:表示當前正在處理的源檔案名稱。__LINE__:表示當前正在處理的源檔案的行,可以用#line指令修改。__STDC__:表示是ANSI
Time of Update: 2018-12-05
C/C++編譯系統編譯器的過程為預先處理、編譯、連結。前置處理器是在程式源檔案被編譯之前根據預先處理指令對程式源檔案進行處理的程式。前置處理器指令以#號開頭標識,末尾不包含分號。預先處理命令不是C/C++語言本身的組成部分,不能直接對它們進行編譯和連結。C/C++語言的一個重要功能是可以使用預先處理指令和具有預先處理的功能。C/C++提供的預先處理功能主要有檔案包含、宏替換、條件編譯等。 1、檔案包含 預先處理指令#include用於包含標頭檔,有兩種形式:#include
Time of Update: 2018-12-05
#include <iostream>int *GetVal(){int* nVal = new int(6);std::cout << nVal << std::endl;// 返回一個局部變數nVal的指標是極危險的.return nVal;}int main(){for (int i = 0; i < 10000000; ++i){std::cout << i << std::endl;//
Time of Update: 2018-12-05
1. 引入nullptr的原因引入nullptr的原因,這個要從NULL說起。對於C和C++程式員來說,一定不會對NULL感到陌生。但是C和C++中的NULL卻不等價。NULL表示指標不指向任何對象,但是問題在於,NULL不是關鍵字,而只是一個宏定義(macro)。1.1 NULL在C中的定義在C中,習慣將NULL定義為void*指標值0:#define NULL (void*)0但同時,也允許將NULL定義為整常數01.2 NULL在C++中的定義在C++中,NULL卻被明確定義為整常數0:/
Time of Update: 2018-12-05
// #表示:對應變數字串化// ##表示:把宏參數名與宏定義代碼序列中的標識符串連在一起,形成一個新的標識符#include <stdio.h>#define trace(x, format) printf(#x " = %" #format "\n", x)#define trace2(i) trace(x##i, d)int main(){int i=1;char *s="three";float x=2.0;trace(i, d);// 相當於 printf("x = %d\
Time of Update: 2018-12-05
傳統 C++#include <assert.h> //設定插入點#include <ctype.h> //字元處理#include <errno.h> //定義錯誤碼 #include <float.h> //浮點數處理 #include <fstream.h> //檔案輸入/輸出 #include <iomanip.h> //參數化輸入/輸出 #include <iostream.h> //資料流輸入/輸出
Time of Update: 2018-12-05
#define _CRT_SECURE_NO_DEPRECATE#include <string> // 使用 string 類時須包含這個檔案#include <iostream>using namespace std;int main(){string str1;// 輸入與輸出cout << "輸入字串 str1" << endl;cin >> str1; getchar();cout << str1
Time of Update: 2018-12-05
#include <iostream>int main(){// 基本思路:// 無符號數與有符號數比較時,有符號數會被轉換成無符號數unsigned int a = 0;// 無符號數// int a = 1;// 有符號數int b = -1;// b是符號數,-1轉換成無符號數後是最大的無符號數4294967295if(a < 0)std::cout << "有符號數" << std::endl;else{std::cout << b
Time of Update: 2018-12-05
按照預設規定,只有一個參數的建構函式也定義了一個隱式轉換,Explicit主要是應用於這種情況,避免出現因為隱式轉換出現二意性。如下執行個體說明:#include <iostream>#include <string>class mystring {public:explicit mystring(const char* p);explicit mystring(int n);};mystring::mystring( const char* p ){std::cout
Time of Update: 2018-12-05
標頭檔D:\instantclient_11_2\precomp\publicD:\instantclient_11_2\oci\include庫檔案D:\instantclient_11_2\precomp\LIBD:\instantclient_11_2\oci\lib\msvc可執行檔D:\instantclient_11_2\BINpc檔案的屬性配置命令列: proc $(InputDir)\$(InputName)輸出: