小编pic*_*c11的帖子

共享库和语言标准

AFAIK,C99和C++标准都不知道共享库.这是为什么?

编辑:在不复制Linux/Windows版本的情况下编写共享库的好习惯是什么?

谢谢.

c c++ shared-libraries

2
推荐指数
1
解决办法
161
查看次数

帮助宏功能

给定许多具有相同签名的内联函数.所有功能都很小,性能至关重要.

int inline f1(int);
int inline f2(int);
...
int inline f5(int);
Run Code Online (Sandbox Code Playgroud)

我需要编写高级函数来自动执行某些任务 - 每个内联函数一个高级函数.第n个高电平功能仅使用第n个低电平功能,否则所有高电平功能都相同.

int F_n(int x) {
    int y;
    // use n-th low level function to compute y from x
    // for example
    y = x*f_n(x);

    return y;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用函数指针进行回调,但我认为它会阻止倾斜并且性能会受到影响.或者我可以复制&贴纸并手动修复功能名称.

有没有办法用宏来做?一个可以自动生成高级功能的宏?

#define GEN_FUNC( HIGH_LEVEL_FUNC, LOW_LEVEL_FUNC ) \
???????               \
???????               \

GEN_FUNC(F1, f1); // generate F1
GEN_FUNC(F2, f2); // generate F2
.........
GEN_FUNC(F_N, f_N); // generate F_N
Run Code Online (Sandbox Code Playgroud)

可能吗?

谢谢.

PS我可以使用函数对象,但它也应该在C中工作.

c c++ macros

2
推荐指数
1
解决办法
180
查看次数

如何释放空指针

可能重复:
在调用free之前检查NULL
当你尝试free()已经释放c中的内存时会发生什么?

希望这不是一个完全愚蠢的问题.无论如何...

传入空指针时会发生什么free.

谢谢!

PS标准兼容分配器怎么样?再次感谢!

c c++

2
推荐指数
1
解决办法
4569
查看次数

C++是否弃用了Linux API的某些部分?

我正在通过示例阅读Linux编程接口Linux编程.两者都是非常好的书籍并且非常好地解释Linux API.但我常常发现自己认为在现实世界的项目中,我更喜欢C++标准库,Boost或其他一些优秀的C++库(有许多编写良好且可移植的C++库).这自然就是一个问题 - 为什么我需要在目标平台上提供优秀的C++编译器和库(Boost,TBB等)时直接使用Linux API?我想在Windows API上也可以这么说,但我对Windows系统编程知之甚少.

c c++ linux

2
推荐指数
1
解决办法
257
查看次数

实际上MPI_Waitall是如何工作的

这个例子是否与手册相矛盾?该手册指出请求数组和状态数组必须具有相同的大小.更确切地说,两个数组应该至少与count参数指示的一样长.然而在下面的示例中,状态数组大小为2,而不是4.此外,该示例与手册中的此语句相矛盾

对于i = 0,...,count-1,MPI_Waitall(count,array_of_requests,array_of_statuses)的无错执行与执行MPI_Wait(&array_of_request [i],&array_of_statuses [i])具有相同的效果任意顺序.

#include "mpi.h"
#include <stdio.h>

int main(argc,argv)
int argc;
char *argv[];  {
int numtasks, rank, next, prev, buf[2], tag1=1, tag2=2;
MPI_Request reqs[4];
MPI_Status stats[2];

MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

prev = rank-1;
next = rank+1;
if (rank == 0)  prev = numtasks - 1;
if (rank == (numtasks - 1))  next = 0;

MPI_Irecv(&buf[0], 1, MPI_INT, prev, tag1, MPI_COMM_WORLD, &reqs[0]);
MPI_Irecv(&buf[1], 1, MPI_INT, next, tag2, MPI_COMM_WORLD, &reqs[1]);

MPI_Isend(&rank, 1, MPI_INT, …
Run Code Online (Sandbox Code Playgroud)

c c++ mpi

2
推荐指数
1
解决办法
4569
查看次数

分叉子进程和C++对象

我有几个问题.任何输入都表示赞赏.谢谢.

  • C++类是否能够生存下去?
  • 如果是这样,它是如何实现的?
  • 指针会发生什么?复制整个免费存储/堆并保留所有虚拟地址?
  • 文件流会发生什么?

c++ linux

2
推荐指数
2
解决办法
973
查看次数

const指向void的目的是什么

你觉得奇怪的是pthread_setspecific需要const void指针但pthread_getspecific返回非const void指针吗?

void *pthread_getspecific(pthread_key_t key);
int pthread_setspecific(pthread_key_t key, const void *value);
Run Code Online (Sandbox Code Playgroud)

链接.

c c++ pthreads

2
推荐指数
1
解决办法
487
查看次数

长期投入指针

这个演员会失败吗?

long x=-1;
long y = (long)(void*)x;
assert(x==y);
Run Code Online (Sandbox Code Playgroud)

更具体地说,如何在编译时检测上面的强制转换是否正常.

c

2
推荐指数
1
解决办法
1926
查看次数

Linux:用负面的pid杀死

来自SUSv4:

如果pid是负数,但不是-1,则应将sig发送到进程组ID等于pid绝对值的所有进程(不包括未指定的系统进程集),并且进程有权发送信号.

据我所知,任何时候都不能有2个或更多具有相同PID的进程.为什么规范要对所有流程说明?

谢谢.

c unix linux

2
推荐指数
2
解决办法
4349
查看次数

如何创建缓冲序列

boost::asio::buffer一个只创建一个元素的缓冲区序列.是否有任何包装器允许从几个缓冲区创建缓冲区序列?

c++ boost-asio

2
推荐指数
1
解决办法
4124
查看次数

标签 统计

c ×8

c++ ×8

linux ×3

boost-asio ×1

macros ×1

mpi ×1

pthreads ×1

shared-libraries ×1

unix ×1