2020年9月1日 星期二

Eclipse 5.27.1 環境主題修改

Eclipse環境設定

1.主題

Window->Preferences->General->Appearance->Theme->Dark

2.文字大小

Window->Preferences->General->Appearance->Colors and Fonts

->C/C++->Editor->18

3.選取自動框

Window->Preferences->Java->Editor->Content Assist

->Auto Activation->Auto activation triggers for java:.abcdefghijklmnopqrstuvwxyz(,

4.修改系統文字大小

e4-dark.css and e4-dark_win.css

在最下面加上

.MPart Tree {

    font-family: Consolas;

    font-size: 16;

}

5.修改自動框反白顏色

Window->Preferences->General->Editor->Text Editor->Annotation

->Annotation->C/C++ Occurrence

                        ->C/C++Writte Occurrence

 

 

 

 

 


閱讀更多 »

2020年6月22日 星期一

使用char*做string reverse時的一些小事

在寫string reverse時發生的一些小事
之前在寫面試試題時遇過以下這個問題
int main() {
    int a[5] = { 1, 2, 3, 4, 5 };
    int *ptr = (int *)(&a + 1);
    printf("%d,%d\n", *(a + 1), *(ptr - 1));
}

接下來就想說
如果題目改為用在char上做string reverse……會怎樣呢?
像這樣↓
char *s = "123456";
void PointerReverseStr(char *s) {
  char *p_end = (char*)(& s + 1);
  char *p_beg = s;
  for (; p_beg < p_end; p_beg++, p_end--) {
    *p_end ^= *p_beg;
    *p_beg ^= *p_end;
    *p_end ^= *p_beg;
    printf("%c", *p_beg);
  }
  p_beg = s;
  for (; p_beg != '\0'; p_beg++) {
    printf("%c", *p_beg);
  }
}

結論是炸開~
完全錯的一蹋糊塗,現在回頭看真的不知道從何吐槽而起
首先
char *p_end = (char*)(&s + 1);
for (; p_end != p_beg; p_end--) {
 printf("%c", *p_end);
}
/*他指向的不是一個陣列,所以用&s+1跟前面的用法完全不同
可以看到印出來一些奇怪的東西,如下
ps:如果有高人知道是為什麼,請指正*/
再來
char *s="123456";
這個東西本來就是不能修改的
因為char*="12345"跟const char*="12345"是一樣的
無法更改裡面的值
如果要能修改要改為
char s[]="123456";
參考:https://stackoverflow.com/questions/1011455/is-it-possible-to-modify-a-string-of-char-in-c

所以改成以下這樣就可以正常跑了
char s[] = "123456";
void ReverseStr(char *s) {
 char* end = s + len(s) - 1;
 char* beg = s;
 for (; beg < end; beg++, end--) {
  *beg ^= *end;
  *end ^= *beg;
  *beg ^= *end;
 }
 beg = s;
 for (; *beg != '\0'; beg++) {
  printf("%c", *beg);
 }
}

閱讀更多 »

2020年5月24日 星期日

[問題]win10 usb麥克風 很小聲 要靠很近對方才聽得到


是的,就在睡覺前用麥克風時發現聲音很小聲
大概超過5~10公分的距離收音就收不到了
然後就開起了debug的不歸路

Note:以下為”USB”麥克風的情境

試過網路上各種辦法
1.      開啟麥克風增量+20~+30
我使用USB 麥克風在win10時找不到這個選項
等級調到100也沒有比較大聲

2.      驅動更新->沒用

目前的到的結論是
1.win10似乎有bug,當你在前置面板使用usb麥克風會變很小聲
2.usb麥克風在win10沒有麥克風增強的選項
3.插在後面的usb孔就可以解決

Ps:在微軟討論有很多人遇到類似問題,不確定是不是都是插前置面板的關係所以很小聲,但是該問題好像是win10的問題,至少目前我改插到後置面板就解決USB麥克風聲音很小的問題了,希望這篇文章能幫到你

天啊~在睡前被搞了一波
豆頁痛

參考連結:

閱讀更多 »

2019年10月4日 星期五

如何使用Doxygen在Visual Studio 2013產生Document in windows

聲明:以下僅為快速使用Doxygen產生Document之用途
   不而外說明細節部分

1.首先下載Doxygen
官方網站:http://www.doxygen.nl/
下載頁面:http://www.doxygen.nl/download.html
選擇windows版本的安裝檔(e.g. doxygen-1.8.16-setup.exe)

2.關於GUI教學可看下面這位大大的教學
https://www.youtube.com/watch?v=-V_vHZPOZfY

其中working space可以設定為你的專案資料夾的根目錄
//詳細作用是什麼不清楚
project name→你的專案名稱
source code directory→設定source code來源
destination directory→設定放置產生的檔案的資料夾

到這裡為止應該可以產生你的Document了
但是註解部分是沒有的
原因是你的註解格式可能不對

3.產生註解格式的方法
在vs裡面的:工具→擴充功能和更新→選擇線上→搜尋doxygen
可以找到3個


第一個似乎是免費的,但功能陽春
安裝後輸入/*!即可產生qt版本的樣式
除此之外似乎不能設定其他樣式

第二個是可以讓你直接呼叫Doxygen來產生檔案
但是我覺得另一個方法比較好

第三個,功能齊全,可選擇各種樣式
但是要付費
據其他網友說僅可是用30天

試用版本測試過能用的功能有
1.add doc comment
2.document all in this file
其他的沒有進行測試
已知document all僅有document all in this file可用

4.在vs內快速產生document
根據該文件:https://www.mantidproject.org/index.php?title=Visual_Studio_Doxygen_Setup&redirect=no

Install doxygen binaries和Rerun CMake不需要做

僅需做Add VC++ Tool:"DoxyGen"該步驟
其中Arguments裡所指的是你先前用GUI產生Document時的那個程式所儲存的設定檔
在Doxygen GUI裡→File→save可獲得
預設檔名為"Doxyfile"//沒有附檔名

Title可以不用有&,可隨你喜歡設定
Command是找你當初安裝doxygen的執行檔位置
Initial Directory設定產生document檔案的地方
Check the "Use output window" box→推測是把輸出資訊列應在vs下方的欄位

5.測試
如果你都順利設定完成,可以在vs內看到



接下來之後就可以開啟快樂的寫文件時間
大致步驟為
使用vs內的套件產生Doxygen看得懂的comment
然後點選工具→Doxygen產生檔案到你設定的資料夾內

前提是你必須先使用Doxygen GUI產生設定檔

以上為最懶的方式產生文件




































閱讀更多 »

2019年8月23日 星期五

CGAL build tutorial


https://www.reddit.com/r/programming/comments/cj4un7/tutorial_install_and_compile_cgal_c_library_with/
https://docs.google.com/document/d/1cj3BgSHbtAPmNzRrNdqRPIqjQ59eW4DWICbuOuGFeAM/edit
看上面那個文件照做,但是最後在測試時
C:\local\CGAL\auxiliary\gmp\include
C:\local\boost_1_64_0
C:\local\CGAL\build\include
C:\local\CGAL\include

C:\local\CGAL\auxiliary\gmp\lib
C:\local\boost_1_64_0\lib64-msvc-12.0// C:\local\boost_1_64_0\libs改成這個
C:\local\CGAL\build\lib

libgmp-10.lib
libmpfr-4.lib
kernel32.lib
user32.lib
CGAL_Core-vc120-mt-4.13.1.lib
CGAL_ImageIO-vc120-mt-4.13.1.lib
CGAL-vc120-mt-4.13.1.lib
libboost_thread-vc120-mt-1_64.lib// 要加這個

libboost_thread-vc120-mt-1_64.lib這個檔案要這樣產生:
1. 首先執行D:\boost_1_64_0目錄下的bootstrap.bat檔案。此時在該目錄下生成檔案b2.exe
2. 執行b2.exe檔案,在當前目錄下生成/stage/lib
3. 把生成的lib檔案加入到工程檔案中即可。
4. add C:\local\boost_1_64_0\stage\lib
// reference web:
// https://itsmytea.pixnet.net/blog/post/172098723-%5Bcgal%5D-install-cgal-for-windows-vs2012
// https://m.doc.docsou.com/be0a0e0e0110bee44def32fa1.html
// https://www.reddit.com/r/programming/comments/cj4un7/tutorial_install_and_compile_cgal_c_library_with/

閱讀更多 »

QT Note

// how to display console window
setting -> Linker -> System -> console

//二進位碼不是以偵錯資訊而建置,要繼續偵錯嗎?
專案屬性 → C/C++  → 最佳化 → 最佳化,選停用// 這似乎不用改也可以跑
         → Linker → 命令列 → 其它選項,打上 /debug

//打開相對路徑的方法
QString path = "../Results/finalResult.mp4";
QUrl pathUrl = QUrl::fromLocalFile(path);
QDesktopServices::openUrl(pathUrl);
//打開絕對路徑
QString progName = "C:/Program Files/DAUM/PotPlayer/PotPlayerMini64.exe";
QDesktopServices::openUrl(QUrl("file:///" + progName, QUrl::TolerantMode));
閱讀更多 »

others note

//libQGLviewer
只是用來做一些基本的顯示,詳細用法不清楚

//要給別人release的話windows 只要多放dll就可以了
//但是linux要做成cmake不能直接執行,因為dll不共用
閱讀更多 »

Eclipse 5.27.1 環境主題修改

Eclipse 環境設定 1. 主題 Window->Preferences->General->Appearance->Theme->Dark 2. 文字大小 Window->Preferences->General-&...