标签: c

什么是逗号分隔的分配?

我在常规中注意到了

else 
  *pbuf++ = '%', *pbuf++ = to_hex(*pstr >> 4), *pbuf++ = to_hex(*pstr & 15);
Run Code Online (Sandbox Code Playgroud)

它为什么有效?

它有什么作用?

c

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

如果使用SIGSTOP停止其中一个子进程,则子进程在终止时会死亡

我的测试代码是

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main() {
  int c = fork();
  if (c == 0) while(1);
  c = fork();
  if (c == 0) while(1);
  c = fork();
  if (c == 0) while(1);
  c = fork();
  if (c == 0) while(1);
  while(1);
}
Run Code Online (Sandbox Code Playgroud)

所以我有一个父母和4个孩子.当我杀死父母时,孩子们正在使用init作为父母.但如果我(与SIGSTOP)停止其中一个孩子然后杀死父母,孩子们也会被杀死.为什么会这样?

c unix linux

12
推荐指数
1
解决办法
2163
查看次数

为LD_PRELOAD设置我的lib会使某些进程产生加载器错误

当我尝试运行脚本时,我收到以下错误:我只有执行权限:

uname: symbol lookup error: /home/dumindara/random/sotest/a.out: undefined symbol: dlsym

这是在我将LD_PRELOAD环境变量设置为之后/home/dumindara/random/sotest/a.out.

a.out有一个测试malloc功能,并在dlsym内部调用.

跑步时我没有遇到这个问题ls.大多数进程都会出现此错误.为什么会发生这种情况,我该怎么做才能使它发挥作用?

c c++ linux linker dlsym

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

有条件编译的注意事项

何时进行条件编译是一个好主意,什么时候是一个非常糟糕的主意呢?

通过条件编译,我的意思是使用#ifdefs仅在某些条件下编译某些代码位.所述#definedš本身可以是在任一个共同的头文件或经由引入的-D编译器指令.

c c++ coding-style

12
推荐指数
1
解决办法
9875
查看次数

使用SSE索引到数组

假设我有一个数组:

uint8_t arr[256];
Run Code Online (Sandbox Code Playgroud)

和一个元素

__m128i x
Run Code Online (Sandbox Code Playgroud)

包含16个字节,

x_1, x_2, ... x_16
Run Code Online (Sandbox Code Playgroud)

我想有效地填补一个新__m128i元素

__m128i y
Run Code Online (Sandbox Code Playgroud)

使用arr取决于值的值x,以便:

y_1  = arr[x_1]
y_2  = arr[x_2]
   .
   .
   .
y_16 = arr[x_16]
Run Code Online (Sandbox Code Playgroud)

实现此目的的命令实质上是从非连续的一组存储器位置加载寄存器.我有一种痛苦的模糊记忆,看过这样一个命令的文档,但现在找不到它.它存在吗?在此先感谢您的帮助.

c sse simd

12
推荐指数
1
解决办法
2161
查看次数

复制unsigned char数组

将unsigned char数组复制到另一个的最佳方法是什么?

例如:

unsigned char q[1000];
unsigned char p[1000];

strcpy (q,&p);
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,它给我错误说"无法将参数1从unsigned char [1000]转换为char*".

c string strcpy unsigned-char

12
推荐指数
1
解决办法
3万
查看次数

定义整数(int); 什么是默认值?

int i;
int data[5] = {0};
data[0] = i;
Run Code Online (Sandbox Code Playgroud)

数据[0]的价值是多少?

另外,这条线的含义是什么?

if (!data[0]) { ... }
Run Code Online (Sandbox Code Playgroud)

c int

12
推荐指数
3
解决办法
4万
查看次数

保持指向变量的指针超出范围是否安全?

示例代码:

#include <stdio.h>
int main (){
    int *p;
    {
        int v = 1;
        p = &v;
    }
    printf("%d\n", *p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但我不确定是否保证v的地址将被保留.

c pointers

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

内存对齐__attribute __((aligned(8)))

我在书中得到了一个程序

#include <stdio.h>
int main( )
{
    struct data
    {
        int a    __attribute__( ( aligned ( 8 ) ) ) ;
        char ch  __attribute__( ( aligned ( 1 ) ) ) ;
        float s  __attribute__( ( aligned ( 4 ) ) ) ;    
    } ; 
    struct data e ;
    printf ( "\n%u %u %u", &e.a, &e.ch, &e.s ) ;
    printf ( "\n%d", sizeof ( e ) ) ;
    return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

当我在安装在Windows 7机器上的cygwin上运行它时.我正在输出

2280712 2280716 2280720 16

为什么我得到这个输出?我期待着输出

2280712 …

c

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

使用SWIG的C++到C包装器(用于FLTK)

我需要生成FLTK C++类的包装器才能在纯C中使用它.我知道,SWIG可以做到这一点,我知道如何为C#,Python等生成包装器.但我不知道如何使用C++包装C++痛饮.这是一项简单的任务,但我找不到答案:)请帮助.

c c++ swig wrapper fltk

12
推荐指数
1
解决办法
3424
查看次数

标签 统计

c ×10

c++ ×3

linux ×2

coding-style ×1

dlsym ×1

fltk ×1

int ×1

linker ×1

pointers ×1

simd ×1

sse ×1

strcpy ×1

string ×1

swig ×1

unix ×1

unsigned-char ×1

wrapper ×1