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自定义命令相关推荐

  1. linux新建自定义命令,Linux 创建自定义命令

    Linux 创建自定义命令 Linux 可以创建自定义使用命令 这里我们采取使用"alias"命令.这里我们首先了解两个文件,通过这两个文件我们可以根据环境配置相应的自定义命令. ...

  2. 小白的编程经验(终端个性化设置、自定义命令)

    在日常学习中,可能会想要让终端显示个性化,自定义各种功能命令提高学习效率.这篇文章就带大家了解一下如何个性化设置终端与自定义命令. 一.外观设置 对于终端外观的设置,主要是设置字体大小.光标形状和终端 ...

  3. go语言生成linux桌面快捷,使用Go语言在MacOS创建一个自定义的命令行工具

    使用 MacOS 做开发的朋友都知道,我们一般会使用 Homebrew 做软件包管理,经常会用到 brew install [soft] 来安装各种各样的命令行软件.今天通过一个百科查找的命令行工具( ...

  4. 跟着老司机玩转Node自定义命令行

    看之前熟读已下文章: 跟着老司机玩转Node命令行 Nodejs 制作命令行工具 github.com/jaywcjlove/- node生成自定义命令(yargs/commander) 通过node ...

  5. Tensorflow |(5)模型保存与恢复、自定义命令行参数

    Tensorflow |(1)初识Tensorflow Tensorflow |(2)张量的阶和数据类型及张量操作 Tensorflow |(3)变量的的创建.初始化.保存和加载 Tensorflow ...

  6. OpenCASCADE绘制测试线束:使用自定义命令扩展测试工具

    OpenCASCADE: 使用自定义命令扩展测试工具 自定义命令实现 在测试工具中注册命令 创建工具包(库)作为插件 创建插件资源文件 动态加载和激活 使用自定义命令扩展测试工具 以下章节解释了如何使 ...

  7. SAP UI5 应用开发教程之三十二 - 如何创建一个自定义 SAP UI5 控件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  8. WPF自定义命令(转)

    WPF自定义命令 自定义命令,可以分为两个层次来理解 1.声明自己的RoutedCommand实例,这个层次比较浅 2.从实现ICommand接口开始,这个才算的上真正的自定义命令 自定义命令的目的是 ...

  9. builtins自定义_ng-repeat里创建的自定义指令

    在ng里,所有的指令在按照意愿正常工作之前的都需要编译一下,包含angularJS的自定义指令. ng模板里的所有指令都会在angularJS加载完毕之后编译一下,所以那些自定义指令和事件才能工作. ...

最新文章

  1. 文档型数据库设计模式-如何存储树形数据
  2. activesync对应的COM口
  3. Netty - 传输
  4. webpack 4.0 小记
  5. 3des加密 java php_php 3DES加密如何兼容Java
  6. SpringBoot2.0 Actuator 监控参数说明
  7. 【WiFi密码破解详细图文教程】ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解
  8. vs2005环境的一些快捷键
  9. Python基础——全局变量与局部变量
  10. 深度贝叶斯神经网络(Deep Bayesian Neural Networks)实现方法
  11. html制作横向菜单,CSS 横向菜单的制作
  12. 中职网络安全—隐藏信息探索
  13. Aidlux边缘设备简介
  14. one-stage two-stage 的区别
  15. linux 关闭sendmail
  16. 【SA8295P 源码分析】19 - QNX Host NFS 文件系统配置
  17. SILAB场景仿真软件:(1)基础介绍
  18. 精简5800三维程序
  19. 远程开启3389端口
  20. Jmeter-并发压测和持续性压测

热门文章

  1. html5新增的标签是什么,HTML5新增标签及含义解释
  2. VS程序中使用ODBC登陆sql数据库的时候出现18456错误
  3. 服务器上的文件都变成只读了,[求助]Excel 文档都变成只读了,请问怎么恢复?/excle变成只读文件怎么办...
  4. 1062: [NOI2008]糖果雨 - BZOJ
  5. 海康ISAPI透传ftp
  6. Jdon框架(JdonFramework)应用系统
  7. 08 python 集合
  8. 【大白话学习】UniApp 微信小程序与APP应用 开发零基础入门教程(一)---基础页面框架搭建
  9. wwwxxx域名选择(www.xxx.com或者.cn)
  10. OpenLayers 6 代码绘制/draw交互组件绘制两种方式绘制椭圆过程详解