我看到了这个链接,但我不是要求使用"extern"的代码性能下降.我的意思是没有"extern",在C++中使用C库时是否存在"上下文切换"? 在C++应用程序中使用纯C(非类包装)函数时是否有任何问题?
我们在嵌入式平台上使用C89.我试图打印出来size_t
,但它不起作用:
#include <stdio.h>
int main(void) {
size_t n = 123;
printf("%zu\n",n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而不是123
,我得到了zu
.
其他说明符正常工作.
如果size_t
存在不应该 zu
也可用printf
?
这是我应该联系我的图书馆供应商的事情,还是允许排除它的图书馆实施?
是否有一个像样的开源C库来存储和操作
动态类型的变量(又名变种)?我主要对原子值(int8,int16,int32,uint,字符串,blob等)感兴趣,而JSON样式的数组和对象以及自定义对象也很好.这种库有用的一个主要情况是使用SQL数据库.
这种库最明显的特征是所有支持值的单一类型,例如:
struct Variant {
enum Type type;
union {
int8_t int8_;
int16_t int16_;
// ...
};
};
Run Code Online (Sandbox Code Playgroud)
其他功能可能包括将Variant对象转换为C结构(使用绑定表),将值转换为/从字符串转换,以及与现有数据库库(如SQLite)集成.
注意:我不相信这个问题是C中通用数据类型的任何库的重复吗?,指的是"队列,树木,地图,名单".我所谈论的内容更多地侧重于使用SQL数据库与在解释语言中使用它们一样顺畅.
执行第三方c ++程序时,我收到以下错误:
加载共享库时出错:libgomp.so.1:无法打开共享对象文件:没有这样的文件或目录
libgomp.so.1库是GNU编译器集合OpenMP运行时库.
这是GCC包的一部分吗?我可以在一个使用gcc-4.5的系统上运行该程序,但不能在gcc-4.3或gcc-4.6的系统上运行.
或者我需要安装另一个包吗?
我尝试通过下载库并将其放在LD_LIBRARY_PATH上在gcc-4.3系统上手动修复此问题,但后来我得到了另一个丢失的库:/usr/lib/libstdc++.so.6:版本`GLIBCXX_3.4.11'没有发现.libstdc是GNU标准C++库,所以这也表明GCC的版本错误?
我不是C++开发人员,所以我不完全知道这些库是什么以及库如何与C++代码一起工作.
os是linux 64位.
gcc-4.3机器:openSUSE 11.1
gcc-4.5机器:openSUSE 11.4(在这台机器上程序可以工作)
gcc-4.6机器:openSUSE 12.1
Postgres世界中的所有东西都有一个共同的缩写pg
,而且调用Postgres的c库 似乎更合乎逻辑libpg
,而不是libpq
.为什么叫它libpq
?是libpg
已经采取的另一种工具?
我有自己的套接字实现,支持来自常规tcp客户端的连接.现在我想在我的服务器程序中添加websocket支持.在这种情况下,我需要支持主要Web浏览器支持的握手和消息成帧协议.我能够处理握手部分,但却陷入了处理消息框架和取消框架的问题.是否有任何现有的C或C++库来处理websocket消息帧的编码和解码,并支持主要Web浏览器使用的主要websocket协议?
我发现的大多数当前实现(即libwebsocket,websocketpp等)都实现了自己的服务器和客户端库,这意味着我需要使用他们的套接字实现.我不想这样做,因为这将要求我在我当前的程序中修改很多东西,这对我来说不是一个选择.我需要的只是一个简单的库来处理websocket框架的编码和解码(和/或处理握手部分,但它不是强制性的).
我正在尝试为Raspberry Pi创建一个操作系统(没有什么大的,只是为了好玩),尽管我可以在Assembly中写出所有内容,但这比在C中编写它要困难得多.我想知道是否(以及为什么如果我不能,我可以将C库(文件)包含在操作系统中,这样我就不必重写它们了.它不会起作用,因为库本身是用C语言编写的吗?
我在使用自定义argc和argv的getopt_long()函数时遇到问题.
我用字符串而不是真正的命令行args接收我的参数.然后从该字符串构建new_argc和new_argv以与getopt_long()一起使用.但getopt_long()在第一次调用时失败.返回EOF和optarg = NULL.
string is "-c 10.30.99.41"
new_argc = 3
new_argv[0]=>./prog_name
new_argv[1]=>-c
new_argv[2]=>10.30.99.41
Run Code Online (Sandbox Code Playgroud)
如果我通过命令行参数,getopt_long对我来说还可以.所以我的短期和长期选择是正确的.但是如果我传递new_argc和new_argv就失败了.
我确信我的短期和长期选项是正确的,并且argv是NULL终止的.我道歉,我不能在这里发布更多代码.
我怀疑getopt_long是否可以与自定义argc和argv一起使用.我怀疑它只适用于真正的argc和argv,因为它必须引用与argc,argv相关的libc中的其他一些代码.任何意见?
option = getopt_long( new_argc, new_argv, short_options, long_options, NULL );
Run Code Online (Sandbox Code Playgroud) 我有一个家庭作业,我的教授说,有些学生发现他们可以检查他们读的字是否是使用功能的特定字符.他说这是在string.h库中,但是我检查过,我没看到它.任何人都能指出我正确的方向吗?
我对Android开发很陌生,我想知道Android是否支持C中的上述功能.
提前致谢.
到目前为止我已经使用了boost库.
但是,我想使用矩阵运算和随机数.
请让我知道有用的c ++库.
谢谢.
c-libraries ×11
c ×6
c++ ×5
android ×1
android-ndk ×1
c89 ×1
gcc ×1
getopt ×1
libraries ×1
naming ×1
performance ×1
postgresql ×1
printf ×1
raspberry-pi ×1
size-t ×1
sockets ×1
variant ×1
websocket ×1