日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

02 C/C++创建tcl自定义命令

發布時間:2024/1/8 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 02 C/C++创建tcl自定义命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 自定義命令

(1)編寫自定義命令

1 編寫自定義命令內容
2 注冊指定命令

/**set up numbers sort command*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <tcl.h> // numbers sort int NumSort(ClientData ClientData, Tcl_Interp *Interp,int objc, Tcl_Obj *const objv[]) {double arr[objc], tmp;char *pstr, *pstr2;char buf[100];int cnt = 1, cnt2 = 0, i = 0;//1. string convert number,numbers sortfor(cnt = 1; cnt < objc; ++cnt) {//1.1 string convert numbertmp = atof(Tcl_GetString(objv[cnt]));//1.2 numbers sortif(cnt == 1) arr[0] = tmp;else {for(cnt2 = cnt-1; cnt2 > 0; --cnt2) {if(tmp >= arr[cnt2 -1]) {arr[cnt2] = tmp;break;}else arr[cnt2] = arr[cnt2 -1];}}} //2. numbers convert string and returnfor(cnt2 = 0; cnt2 < objc -1;++cnt2) {Tcl_AppendResult(Interp,gcvt(arr[cnt2], sizeof(arr[cnt2]), buf)," ",NULL);}return 0; }int Numsort_Init(Tcl_Interp *Interp) {//login commandTcl_CreateObjCommand (Interp, "numsort", NumSort, 0, 0);return TCL_OK; }

注解:
(1)初始化函數Init的名字必須是文件名首字母大寫+"_Init",上文c文件名是numsort.c,
故初始化函數名為Numsort_Init;

2 編譯生成動態庫

(1) 格式:
gcc -fPIC -shared .c -o lib.so

$ gcc -fPIC -shared numsort.c -o libnumsort.so

注解:
(1) __.c 代表要進行編譯的C文件名
(2)lib___是lib+C文件名,生成動態庫的庫名為lib
.so

3 加載動態庫

(1) 格式:
load libname

% load libnumsort.so

4 調用自定義命令

(1) commondname args

% numsort 1 1.1 2 2.2 22 3.3 90 2.5 11.11 1 1.1 2 2.2 2.5 3.3 11.11 22 90

5 可能出現的錯誤

(1) tcl.h文件缺失
解決方案:
編譯安裝tcl源碼包,即可解決;
tcl源碼包直接到tcl/tk官網下載即可

tcl源碼包安裝,請看本文的另一篇文章
https://blog.csdn.net/qq_43352441/article/details/107307849

總結

以上是生活随笔為你收集整理的02 C/C++创建tcl自定义命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。