JayTan_1992
码龄13年
关注
提问 私信
  • 博客:20,947
    社区:432
    问答:12,307
    33,686
    总访问量
  • 9
    原创
  • 896,595
    排名
  • 5
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2011-10-13
博客简介:

TA_tan的专栏

查看详细资料
个人成就
  • 获得8次点赞
  • 内容获得1次评论
  • 获得52次收藏
创作历程
  • 2篇
    2022年
  • 6篇
    2018年
  • 1篇
    2017年
成就勋章
TA的专栏
  • navigation2
  • menuconfig
  • STM32
  • ubuntu
    3篇
  • glib
    1篇
  • c/c++ 开发技巧
    4篇
  • 算法导论
    2篇
  • dbus
  • libev
  • Linux 驱动
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

179人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

extern C 以及C/C++函数符号的理解

在使用dlopen调用C++的函数和类之前,需要简单的了解一下name mongling。我们在代码里写的每个函数都会变成唯一的符号在程序中。C++有一个函数重载的特性是怎么实现的呢?
原创
发布博客 2022.05.25 ·
785 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

c++函数包装器之function

本专栏均为自己的工作心得,希望能够通过文字的方式记录下来,整理自己的思路,加强对概念的理解。由于笔者的水平有限,如果错误,还请指出,谢谢。
原创
发布博客 2022.05.19 ·
479 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于网络协议栈性能的测试指标问题

发布问题 2019.05.07 ·
2 回答

FSDK的函数接口

发布资源 2018.07.24 ·
pdf

算法导论练手系列之最大子数组问题

/************************************************************************* > File Name: find-max-subarray.c > Author: JayTan > Mail: jaytanfly@gmail.com > Created Time: 20...
原创
发布博客 2018.05.16 ·
347 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

算法导论练手系列之归并排序

/************************************************************************* > File Name: merge-sort.c > Author: JayTan > Mail: jaytanfly@gmail.com > Created Time: 2018年05月1...
原创
发布博客 2018.05.12 ·
339 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

dlopen、dlsym、dlclose学习总结

1.介绍  在dlfcn.h头文件中,包含了dlopen,dlerror,dlsym,dlclose函数。函数原型如下: #include <dlfcn.h>        //打开指定的动态库,返回的是该动态库的handle,在dlsym,dlclose中将继续使用。       void *dlopen(const char *filename, int flag)...
原创
发布博客 2018.04.25 ·
2912 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

include的另类使用以及简单理解

阅读Android RIL有感:include 的非常规使用,使代码更加简洁。
原创
发布博客 2018.04.12 ·
328 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

高通 nv item 的较完整清单

发布资源 2018.03.26 ·
zip

QPST_2.7.453

发布资源 2018.03.23 ·
zip

Ubuntu 14.04 glib安装

系统:Ubuntu 14.04安装:glib-2.54.31.下载http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.配置./configure问题 1:configure: error: Package requirements (libffi >= 3.0.0) were not met: No package 'libffi' found Co...
原创
发布博客 2018.02.11 ·
3743 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

apt-get E:软件包 xxx 需要重新安装,但是我无法找到对应的安装文件 解决方法

系统:Ubuntu 14.04问题:执行 sudo apt-get install libffi-dev 失败,提示 E:软件包 xxx 需要重新安装,但是我无法找到对应的安装文件问题如下:执行 sudo apt-get update 也失败。解决方法:sudo dpkg --remove --force-remove-reinstreq 提示的包sudo apt-get upgrade 正常执行...
原创
发布博客 2018.02.11 ·
8886 阅读 ·
7 点赞 ·
1 评论 ·
23 收藏

virtual box 在Ubuntu14.04下启动失败解决办法

主机OS:ubuntu 14.04  virtual box:http://download.virtualbox.org/virtualbox/5.1.28/virtualbox-5.1_5.1.28-117968~Ubuntu~trusty_amd64.deb  下载完成后,直接运行virtualbox-5.1_5.1.28-117968~Ubuntu~trusty_amd64.deb
原创
发布博客 2017.10.13 ·
3096 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

代码不知道错在哪里了,苦恼

答:

LZ,我运行你的代码
输入:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出:
Mike CS991301
Joe Math990112Y

最后结尾多了一个Y,在Joe这一行数据中因为ID正好是10个字符把结构体中的char ID[10] 填满了,没有结束符,所以就接着往后输出将数字89当做字符‘Y’输出。
出现结束符,输出结束。

修改方法,将结构体中的字符加大一位:
typedef struct student{
char name[11];
char ID[11];
int score;
}stu;

该方法已测试成功。

另外,LZ定义变量时最好都有初始化,不然很多bug不好找。
可以考虑一下将字符数组换成string。

回答问题 2017.09.30

嵌套循环变递归的问题怎么实现

答:

lz,这个不是输出数的二进制形式吗?

 package test_for;

public class Testfor {
     public static void main(String[] args){

         for(int i=0 ;i < 0x100;i++)
                System.out.println(Integer.toBinaryString(i));
        }
}

回答问题 2017.09.29

最近在自学c++ builder,但遇到了一些困扰,对里面的控件和属性之间的关系,本质不了解

答:

现在用C++ Builder 的人不多了啊,之前用过一段时间。个人认为每个控件的属性方法都是类变量和类方法。至于为什么用“->”,我想看这个例子中的TBitmap *Bitmap就很好理解。

Bitmap->LoadFromFile("f:\美女.bmp");
因为Bitmap就是指针,所以用->。

BitmapBack->Canvas->CopyRect(RectCopy,PaintBox1->Canvas,RectCopy);
因为BitmapBack是指针使用->调用Canva,然后Canvas也是指针所以有使用->。

至于做游戏的话,我不了解builder有什么简单上手的教程,要做也可以做,但是你可以去了解一下cocos2dx在VS上还是很好上手的。

回答问题 2017.09.15

C++入门 实在想不通 没在论坛找到求大佬帮忙

答:

#include
using namespace std;

void swap(int *a,int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a = 3,b = 5;
int * pa = & a;
int * pb = & b;
swap(pa,pb);
cout << "a:"<<a << "," << "b:"<<b;
return 0;
}
输出:
a:5,b:3

楼主是想通过函数交换a和b的值吗?
首先,你应该知道的是传入函数中的是一个副本。也就是说我们为了改变a本身,传入了a指针的副本,通过指针找到a存在的地方,真正的改变a的数值。

或许下面这个简单的例子更好理解一些。

#include
using namespace std;

void setValue(int a)
{
a = 10;
}

void setValuebyPoint(int *a)
{
*a = 9;
}

int main()
{
int a = 8;
cout<<a<<endl;
setValue(a);
cout<<"setValue:"<<a<<endl;
setValuebyPoint(&a);
cout<<"setValuebyPoint:"<<a<<endl;
}
输出:8
setValue:8
setValuebyPoint:9

回答问题 2017.09.14

上位机与下位机通讯常用的框架或协议(下位机C语言)

答:

可以参考一些成熟的协议,比如modbus。

回答问题 2017.09.13

c++链表操作时出现的指针错误

答:
 #include <cstddef>
#include <iostream>

using namespace std;
struct Node
{
    int data;
    Node* next;
};
typedef Node* List_Node;
class List
{
public:
    List();

    ~List();
    void creat_List_last();   // 创建新链表
    void print_List(); // 遍历输出链表
private:
    List_Node head;
    List_Node tail;
};
List::List()
{
    head = NULL;
    tail     = NULL;
}
void List::creat_List_last()
{
    List_Node p;
    int temp;

    cout << "请输入数据(以-1表示结束):"<<endl;
    cin >>temp;
    while (temp != -1)
    {
         p = new Node{temp,NULL};
        if (head == NULL)
        {
            head = p;
            tail = p;
        }
        else
        {
            tail->next = p;
            tail    = p;
        }
        cout << "请输入数据(以-1表示结束):"<<endl;
        cin >>temp;
    }
}

void List::print_List()
{
cout << "所有数据如下:" << endl;
List_Node p=head;
while (p)
{
cout<data<<" ";
p = p->next;
}
}

List::~List()
{
List_Node p=head;
List_Node q;
while (p)
{
q = p->next;
delete p;
p = q;
}
}
int main()
{
List l;
l.creat_List_last();
l.print_List();
}

楼主,我执行你的代码获得的错误提示不一样,我获得的是 double free,大概意思是多次释放同一个资源。
主要修改了,析构函数,只有一个中间变量是没办法遍历并逐个释放资源的。参考我的析构函数。
同时,我在创建链表节点时赋予了初值防止因为初值的原因引起其他错误。

回答问题 2017.09.13

公司两个网段 A能ping通B 但是不能访问B的端口

答:

A网是不是子网啊?可以搜一下子网能ping通父网,父网ping不同子网的问题。如果A网是子网的话,需要将路由器设置为静态路由。

回答问题 2017.09.12
加载更多