前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一周技术杂谈2023_09_11--2023_09_15

一周技术杂谈2023_09_11--2023_09_15

作者头像
用户5908113
发布2023-09-19 17:18:04
1550
发布2023-09-19 17:18:04
举报
文章被收录于专栏:Pou光明

平铺直述!

1、linux 64位系统可以运行32位linux程序。需要在linux64位系统新增一些设置:

代码语言:javascript
复制
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

其他已验证:32位用到的系统库无需替换。其他自己链接的库需要处理(这块我 直接链接静态库做规避。)

2、回调函数与cmake编译

1>回调函数

代码语言:javascript
复制
typedef int(*ReadInputDataCallback)  (int input);

//函数指针,指向函数的指针变量。可以被调用之前上学时学到过这个概念,如今知道了具体使用场景

//int是函数返回类型,int input是函数参数

代码语言:javascript
复制
ReadInputDataCallback g_readInputDataCallback;
代码语言:javascript
复制
int* getinoutData(int  inpput){
    Printf(“input data is : %d \n”, inpput);
}

//回调函数:函数指针作为函数参数

代码语言:javascript
复制
int RegisterReadInputDataCallback(const ReadInputDataCallback ptr){
g_readInputDataCallback = ptr;
}
代码语言:javascript
复制
RegisterReadInputDataCallback(getInputData);
代码语言:javascript
复制
Int inputData = 666;
g_readInputDataCallback(inputData );

2>cmake编译

上述操作使用cmake gcc组织文件编译是没问题的,但是如果使用g++编译是有问题的,具体如下:

代码语言:javascript
复制
error: ‘<anonymous>’ has incomplete type

具体来讲是g++不允许该该危险行为,网上搜索的方法比较粗暴,使用-fpermissive编译选项,该选项的作用是允许编译一些非法的C++语法,将报错转换为警告。

3>cmake将c程序与c++程序混编

代码语言:javascript
复制
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -O2" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

这块使用背景是这样的:原来的程序是使用cmake组织文件的,入口程序是.c的,新需求需要链接C++的库,结果链接后c++标准库找不到,还有很多系统库的错误,因为在gcc的编译器编译C++代码,后来把入口程序后缀改成了.cpp,然后解决了。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-17 21:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档