2020年5月24日 星期日

Cpp - &

C++ 的 &     C++ 的 & 比起 C 語言的提取位置,還多了宣告引用 ( 必須在定義時候就進行初始化 )。 int a = 5; int &b = a; std::cout << "a value\t\t" << a << "\n"; std::cout << "a address\t" << &a << "\n"; std::cout << "b value\t\t" << b <<...

C/C++ - 左值、右值 ( lvalue、rvalue )

lvalue、rvalue 基本概念 左值 (lvalue) : 一個佔據某個特定記憶體的值。 右值 (rvalue) : 一個 expression 結束後就消失的值。 基本上這兩個定義包含了全部的值,非左即右,非右即左。 int var = 4; // var 參數佔據記憶體 = lvalue 4 = var; // 4 不佔據記憶體 = rvalue (var + 1) = 4; // var + 1 也不佔據記憶體 = rvalue     以上 2 跟 3 行會報錯,lvalue required as left operand...

2020年5月23日 星期六

C/C++ - Const

const 基本用途     告知編譯器這個值為「常數」無法被修改。 一般作用 const int index = 5; index = 8; // error: assignment of read-only variable 'index' 作用於 * // const pointer char * const constptr = initptr; *constptr = 1; // 改變其 value OK constptr = otherptr; // 改變其 addr...

C/C++ - Function Pointer 應用 CallBack Function

Function Pointer 應用 CallBack Function     有了 Function Pointer 就意味著,Callback Function 能被實現。     Callback Function : A 跟 B 講 "看到 C 就打電話給我" 打電話給 A = Callback Function     main.cpp ( A ) int main () { // 從 0 數到 10000000,中間請回報進度 % 數 zeroTo(1000000,...

2020年5月12日 星期二

心情日記 2019/05/12

好久沒寫日記,整理 tag 才發現我有寫這種東西。根據勒布朗克法則:待會兒等於永不。即使現在是上班時間我也照寫 ( 其實只是讀 spec 讀到煩躁,想呼吸新鮮空氣 )。寫 blog 現在對我的生活來說是提神良品,非常適合我這種六日只想待在家的廢才。即使一開始有一篇沒一篇地寫,如此懶散的頻率,文章數還是來到了三位數。看著已發表的文章,深深理解 1 > 0 的理論,不是指冠軍戒指,而是 " 累積 "。我是一個沒啥雄心壯志的人,也沒有一個夢想讓我想灌注一身的努力去實現,除了財富自由。但我想我開始能接受這樣的自己,沒有夢想的工程師,很廢但依然能享受...

2020年5月10日 星期日

C 語言 - CLI ( Command Line Interface ) 設計 (1)

CLI 命令列介面     在設計 CLI 的程式時,最好的方法是遵從 IEEE Std 1003 ( POSIX ) 對 program 的 command-line options 之規範。所以用 getopt 去做 parse command-line 是最簡單的,有一點要注意的是 GNU 提供的 getopt 支援 " -- ",這個 POSIX 沒有規範。 常見的 Usage 設計 Usage : my_program tcp <host> <port>...

2020年5月3日 星期日

Makefile 筆記 (1)

Makefile 範本 (OS: Windows)     教學網路上很多,這裡記錄下我目前測試程式碼的 Makefile # 通用編譯參數 CC = gcc CFLAGS = -g -Wall # Objects = 為要與 main 連結的 .o 檔 OBJECTS = hello.o pointer.o unsignedChar.o struct.o SOURCE_PATH = source/ INCLUDE_PATH = include/ program: main.o ${OBJECTS} ...

C 語言 - warning: left shift count >= width of type

warning: left shift count >= width of type     一般來說,就是 shift 的 bit 大於資料型態的 bit 數。但有時使用 unsigned long 仍然會出錯,因為 unsigned long 會依照系統的不同,有時是 32 bit 有時是 64 bit,所以這時用 unsigned long long 較為安全 ( 保證 64 bit )。 參考資料 : https://stackoverflow.com/questions/4201301/warning-lef...

Popular Posts