Articles of c + +

通过蓝牙连续传输数据

我想生成0到100之间的随机数,并通过蓝牙连续地从Raspberry Pi(运行Linux)传输到embedded式(x86)PC(也运行Linux)。 我的C代码基于以下内容: 客户端: – #include <stdio.h> #include <unistd.h> #include <sys/socket.h> #include <bluetooth/bluetooth.h> #include <bluetooth/rfcomm.h> int main(int argc, char **argv) { struct sockaddr_rc addr = { 0 }; int s, status; char dest[18] = "01:23:45:67:89:AB"; // allocate a socket s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); // set the connection parameters (who to connect to) addr.rc_family = […]

无法用twitcurl编译程序

我想在Linux上用twitter库编译一个C ++程序。 我目前使用twitcurl作为twitter API库,并安装了g ++以及官方网站上列出的所有必需的文件和软件包: http : //code.google.com/p/twitcurl/wiki/WikiHowToUseTwitcurlLibrary 但是,当我编译我的程序使用这个命令g++ twitterClient.cpp -ltwitcurl ,我得到这个错误: cannot find -ltwitcurl 我也使用CodeBlocks的IDE编译它,但得到这个错误: undefined reference to twitCurl::~twitCurl() ` 我的代码只包含几行: #include <iostream> #include "Twitter/Twitter.hpp" using namespace std ; int main () { Twitter t ; return 0 ; } 我已经花了很多时间在这个上,但是我无法解决这个问题。 我应该怎么做才能在命令行和CodeBlocks上编译程序?

FreeTDS:如何设置运行存储过程的参数字符集

我有一个C程序通过FreeTDS连接到MSSQL数据库。 我试图执行一个存储过程与varchar参数设置为“SaídaLiberada”,但它存储与奇怪的字符在MS SQL,如上面的截图: 这是我的freetds.conf: # $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $ # # This file is installed by FreeTDS if no file by the same # name is found in the installation directory. # # For information about the layout of this file and its settings, # see the freetds.conf manpage "man freetds.conf". […]

numa,mbind,segfault

我已经使用valloc分配内存,比方说[15 * sizeof(double)]的数组A. 现在我把它分成三块,我想把每块(长度为5)绑定到三个NUMA节点(比如说0,1和2)。 目前,我正在做以下工作: double* A=(double*)valloc(15*sizeof(double)); piece=5; nodemask=1; mbind(&A[0],piece*sizeof(double),MPOL_BIND,&nodemask,64,MPOL_MF_MOVE); nodemask=2; mbind(&A[5],piece*sizeof(double),MPOL_BIND,&nodemask,64,MPOL_MF_MOVE); nodemask=4; mbind(&A[10],piece*sizeof(double),MPOL_BIND,&nodemask,64,MPOL_MF_MOVE); 第一个问题是我做对了吗? ie是否有任何问题,正确alignment页面大小例如? 目前arraysA的大小为15,运行良好,但是如果我将数组大小重置为像6156000和piece = 2052000之类的值,随后三次调用mbind以&A [0]开始,&A [2052000]和&A [4104000 ]然后我得到一个分段错误(有时它只是挂在那里)。 为什么它运行小尺寸罚款,但更大给我段错误? 谢谢。

我怎么知道一个Linux系统调用是否是线程安全的?

linux中的一些函数用_r标记“线程安全”(例如gmtime_r),但是大部分系统调用都没有标记,也没有在手册中提及。 所以我的问题是:我怎么知道一个Linux系统调用是否线程安全? 谢谢!

交叉编译PowerPC架构的Boost库

我正在尝试为PowerPC体系结构交叉编译Boost库(Thread,System)。 我遵循下面的步骤,但面临的问题。 我运行一个shell脚本来设置我的工具链。 编译器ppc_4xx-g ++在shell中可见。 步骤如下: 添加一行“using gcc:power:ppc_4xx-g ++;” 到文件user-config.jam 在根目录下运行./bootstrap.sh –prefix = BoostPowerPC。 运行./b2 install –build-dir = BoostPowerPC工具集= gcc-power –with-thread –with-system stage 结果:所有的目录被创build,但编译失败。 我不能附上错误日志(请给我你的电子邮件,以便我可以发送错误日志,如果你需要的话)。 以下是错误日志的快照。 Component configuration: – atomic : not building – chrono : not building – context : not building – date_time : not building – exception : not building – filesystem […]

C ++和Xlib – 中心窗口

我已经开始直接学习基于XLib的GUI应用程序编程,并且试图在屏幕上创build一个居中的窗口。 我不知道用来达到这个目的的常用技术。 我的代码(这是行不通的)是这样的(我使用CodeBlocks) #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xos.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include <GL/glew.h> #include <GL/freeglut.h> int screen; Display *display; XSetWindowAttributes window_attributes; Window mainwindow; XEvent events; int main(int argc, char** argv) { display = XOpenDisplay(NULL);screen = DefaultScreen(display); window_attributes.background_pixel = XWhitePixel(display, screen); window_attributes.border_pixel = XBlackPixel(display, screen); window_attributes.win_gravity = SouthWestGravity; mainwindow = […]

sleep()是否干扰scanf()?

我有两个线程 xThread :连续在控制台上打印X. inputThread :从stdin获取input 当用户input“C”或“c”时停止连续打印 #include<stdio.h> #include<sys/select.h> #include<pthread.h> #define S sleep(0) int read_c = 0; pthread_mutex_t read_c_mutex = PTHREAD_MUTEX_INITIALIZER; void* inputThread_fn(void* arg) { char inputChar; while(1) { S; printf("\nChecking input"); scanf("%c",&inputChar); if(inputChar=='C' || inputChar == 'c') { pthread_mutex_trylock(&read_c_mutex); /*<–This must be _lock ? because with the use of trylock even If i don't aquire […]

静态和内联

我在C编程。我想要一些关于静态和内联函数的描述。 我知道,如果我们把一个函数做成静态的,那么它就是编译器的一个指示,即它只在一个翻译单元的内部链接下。 我有以下关于静态和内联的疑问: 如果我们做一个静态的函数,我们可以在其他的翻译单元中使用它…即在其他.c文件中? 如果是的话,如何? 如果我们将函数作为静态内联,那么有什么区别? 编译器如何处理它? 是否将函数作为静态函数产生与macros相同的效果? 将函数视为内联取决于编译器的大小。 那么有什么办法可以强制让它像内联一样被对待? 我们如何使用内联和静态函数进行优化? 请在上面的内容中阐明一些内容。 平台是Linux,gcc编译器,C语言。

串行设备:读取8N1的作品,但写一个字节失败

在我的程序中,我从串口设备(Linux,8N1)读取没有任何问题。 但在这种情况下,我想写出一个字节,我没有得到任何的界面。 我假设我的串行输出设置是错误的。 但是,如何设置c_oflag的方法并不多 我的代码: #define TTYDEVICE "/dev/ttyS0" #define BAUDRATE B9600 int openSerialDevice(const char* devTTY, struct termios oldTio) { //—-< Open serial device >———————————- int fileDescriptor; // fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); fileDescriptor = open(devTTY, O_RDWR | O_NOCTTY); //fileDescriptor = open(devTTY, O_RDWR | O_NOCTTY /*| OPOST*/); if (fileDescriptor == -1) { perror("Error […]