Eclipse 常用快捷鍵

篇記錄一下 Eclipse 常用快捷鍵,特別是trace code時,善用快捷鍵會快很多,效率大幅提升。

Eclipse 常用快捷鍵

開啟宣告該引用的檔案/跳至定義處/Open Declaration:F3
跳到前一次/後一次的編輯位置:Alt+左方向鍵/Alt+右方向鍵
找對應大括號的快捷鍵:先把游標移到大括號右邊,再按 Ctrl+Shift+P就可以跳到另一個大括號了。

修改 Eclipse 編譯的快捷鍵

在 Eclipse 的選單上選擇 Window -> Preferences, 在左側選單 sidebar 延伸 General -> Keys,
右側選單會顯示目前所有的快捷鍵, 快速地找到 Build Project 然後加上快捷鍵,
預設 Build All 的快捷鍵是 Ctrl+B, 我自己個人是習慣按 Ctrl+B 是 Build Project
所以我就把 Build All 的快捷鍵取消換成 Build Project, 如下圖。

參考
Eclipse快捷鍵—–原來Eclipse完全不許用滑鼠的,不用羨慕VI了
https://www.itread01.com/content/1550643846.html
丟掉滑鼠吧,使用最好用的Eclipse快捷鍵
https://www.itread01.com/content/1547813885.html
Eclipse和Intellij idea切換
https://www.itread01.com/content/1548813091.html

相關主題
Eclipse 匯入 cmake 專案
Eclipse 索引(index)額外的定義
Visual Studio Code 常用快捷鍵
Qt Creator 常用快捷鍵
Eclipse 找對應大括號的快捷鍵

Eclipse 找對應大括號的快捷鍵

先把游標移到大括號右邊,再按 Ctrl + Shift+ P 就可以跳到另一個大括號了。

參考
Matching Brackets
https://www.eclipse.org/pdt/help/html/matching_brackets.htm
ide - Eclipse - how to go to matching bracket? - Stack Overflow
https://stackoverflow.com/questions/20854135/eclipse-how-to-go-to-matching-bracket/20854194

相關主題
Eclipse 常用快捷鍵
Visual Studio Code 常用快捷鍵
Qt Creator 常用快捷鍵

在 Ubuntu 安裝 StarUML

本篇介紹一款在 Ubuntu 下 UML 的軟體「StarUML」,StarUML 是一個開源的 UML 工具,用 nodejs 寫成,目前永久免費試用。

推薦安裝 2.8 (輸出JPEG圖檔沒有浮水印),可以透過下面官網去下載,
網路上也一些 3.x 的破解方式,有興趣的話可以去找看看。
官網下載:http://staruml.io/download
支援平台:macOS 10.9 以上 / Windows 7 以上 / Linux

Read More

C++ 計算程式執行時間

本篇 ShengYu 將介紹如何使用 C++ std::chrono 計算某段程式碼執行的時間差並且列印時間差,
計算程式執行時間有幾種方式,本篇介紹使用 C++11 的 std::chrono 的幾種寫法來計算時間差並且用 printf 或 cout 將時間差印出來。

C++11 用法

需要引入的標頭檔<chrono>

在使用前,需要先宣告引用 chrono,以下範例分別示範 steady_clock 與 high_resolution_clock 的用法,
t1-t2 所花時間可使用 duration_cast 轉換,它會根據傳入的時間單位,回傳出對應的時間單位,

calculate-time.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// g++ calculate-time.cpp -o a.out -std=c++11 -pthread
#include <iostream>
#include <chrono>
#include <thread>

int main() {
std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();

std::cout << "Waited " << std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count() << " us.\n";
std::cout << "Waited " << std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count() << " ms.\n";
printf("Waited %ld ms.\n", std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count());

auto t3 = std::chrono::high_resolution_clock::now();
std::this_thread::sleep_for(std::chrono::milliseconds(200));
auto t4 = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> duration3 = t4 - t3;

printf("Waited %f ms.\n", duration3.count());
return 0;
}

輸出結果如下:

1
2
3
4
Waited 200072 us.
Waited 200 ms.
Waited 200 ms.
Waited 200.085996 ms.

參考
https://kheresy.wordpress.com/2013/12/27/c-stl-chrono/
C++ use std::chrono to measure execution of member functions in a nice way
https://stackoverflow.com/questions/52905915/c-use-stdchrono-to-measure-execution-of-member-functions-in-a-nice-way
深入理解std::chrono的時鐘Clock
https://www.cnblogs.com/zhongpan/p/7490657.html

相關主題
C/C++ 新手入門教學懶人包
C++ 取得系統當前時間
std::this_thread::sleep_for 用法與範例
std::deque 用法與範例
std::queue 用法與範例
std::vector 用法與範例
std::thread 怎麼實作的?
Python 計算程式執行時間

32/64bit 作業系統 printf 列印 int64_t / uint64_t 的方法

本篇將介紹在 C/C++ 程式裡如何 printf 列印出 int64_t 或 uint64_t 這個變數類型,

int64_t 在 Linux 64-bit 作業系統 printf 列印要用 %ld
int64_t 在 Linux 32-bit 作業系統 printf 列印要用 %lld
uint64_t 在 Linux 64-bit 作業系統 printf 列印要用 %lu
uint64_t 在 Linux 32-bit 作業系統 printf 列印要用 %llu
int64_t 在 Windows 64-bit/32-bit 作業系統 printf 列印要用 %lld
uint64_t 在 Windows 64-bit/32-bit 作業系統 printf 列印要用 %llu

int64_t 或 uint64_t 會根據 32/64-bit 作業系統不同而定義不同類型,
如果想寫一種 32/64bit 作業系統都可以通用 printf 的程式碼,請養成好習慣,使用 PRId64PRIu64!詳細請看範例示範。

Read More

C/C++ printf 參數說明

本篇列出 C/C++ 常用的 printf 格式化輸出參數與說明,

字元/字串

字元/字串 說明
%c 字元(char)
%s 字元陣列(char *)
%S 寬字元陣列(wchar_t *)

範例如下,

1
2
printf("%c", 'a'); // printf char 字元
printf("%s", "hello"); // printf char * 字元陣列

整數

整數 說明
%d、%i 十進制整數(int)
%u 十進制無號整數(unsigned int)
%ld、%Ld 十進制長整數(long)
%hd 十進制短整數(short)
%x 十六進制
%ld (int64_t => long int linux 64bit)
%lld (int64_t => long int linux 32bit)
%lu (uint64_t => unsigned long int linux 64bit)
%llu (uint64_t => unsigned long int linux 32bit)
%I64d (long long)
%I64u (unsigned long long)
%I64x 64bit的16進制

範例如下,

1
2
3
4
5
int n1 = 0;
printf("%d", n1);

unsigned int n2 = 0;
printf("%u", n2);

浮點數

浮點數 說明
%f 單精度浮點數,預設輸出精度6位(float)

範例如下,

1
2
3
4
5
float n1 = 1.1f;
printf("%f", n1);

double n2 = 1.2;
printf("%f", n2);

其他

其他 說明
%p 指標位址
%% 印出百分比符號

範例如下,

1
2
int n = 0;
printf("%p", &n); // 記憶體位址

參考
https://blog.csdn.net/xiexievv/article/details/6831194
http://edisonx.pixnet.net/blog/post/35305668

其它相關文章推薦
C/C++ 新手入門教學懶人包
32/64bit 作業系統 printf 列印 int64_t/uint64_t 的方法
C++ 計算程式執行時間

消除編譯警告 unused parameter

本篇介紹 GCC 移除 unused parameter 編譯警告的方法,gcc 編譯時開啟 -Wall 會出現很多警告,
如果要解決 unused parameter 這種的警告解決方式有三種,
第一種:去除這個變數
第二種:註解這個變數
第三種:這個變數就是要留著不能註解,使用以下寫法可以閃過編譯器的檢查。

Read More