小编Jen*_*edt的帖子

管道系统调用

有人可以在c中给我一个简单的例子,使用pipe()系统调用并使用ssh连接到远程服务器并执行一个简单的ls命令并解析回复.提前致谢,..

c ssh posix pipe

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

未声明的标识符?

继续使用代码获取错误,这是从旧版VS到2010版的转换:

#include <string>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <math.h>

using std::string;

#define CROSSOVER_RATE            0.7
#define MUTATION_RATE             0.001
#define POP_SIZE                  100           //must be an even number
#define CHROMO_LENGTH             300
#define GENE_LENGTH               4
#define MAX_ALLOWABLE_GENERATIONS   400

//returns a float between 0 & 1
#define RANDOM_NUM      ((float)rand()/(RAND_MAX+1))

//----------------------------------------------------------------------------------------
//
//  define a data structure which will define a chromosome
//
//----------------------------------------------------------------------------------------
struct chromo_typ
{
    //the binary bit string is held in a std::string
  string    bits;  

    float     fitness;

    chromo_typ(): bits(""), fitness(0.0f){};
    chromo_typ(string …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm visual-studio genetic-algorithm

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

为什么没有轮询/选择类似机制的消息队列?

就像我们可以做的那样,在fd上轮询/ epoll/select,我们不能在msg队列id上.我找到了一些非标准的方法来将msgqueue-id设为fd,但是后来它是非标准的.所以我的问题是,为什么linux极客,没有在msg队列id上实现poll/select?这会导致严重的问题吗?

我需要实现这种机制.我怎样才能做到这一点 ?

c linux linux-kernel

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

如何确定传递的数组是1-D,2-D还是ND数组

我想编写一个函数,它接受一个数组作为输入参数.并且该函数应该打印数组的所有元素.

print_array(arr)
{
  //print all the elemnts of arr.
}
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做.

我想首先我们需要找出传递的数组是1-D还是2-D还是3-D等等......数组

因为,打印以下元素:

                            1-D array, you need only 1 for loop.
                            2-D array, you need only 2 for loop.
                            3-D array, you need only 3 for loop.
Run Code Online (Sandbox Code Playgroud)

但是,我不知道你是如何判断它的1-D,2-D还是ND阵列.请帮忙.

c c++ multidimensional-array

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

使用C++ preIncrement和postIncrement的奇怪经历

++a = b操作显示没有错误,但a++ = b在编译时显示错误g++.在这些操作之前初始化变量.

虽然这些操作没有实际用途,但我认为它们都应该在编译时发出相同的错误.你怎么看?如果有正当理由请向我解释.提前致谢!:)

PS gcc给出了这两个错误.

c++ gcc g++

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

使用c ++方法中的函数指针调用目标c方法

我有一个c ++类需要使用指向该方法的指针调用目标c方法.此方法返回void并接受类型为"status"的参数,其中status是一个简单的整数枚举.

 enum status
 {
       status_valid = 0,
       status_invalid,
       status_unknown
 };
Run Code Online (Sandbox Code Playgroud)

我有像这样设置的obj-c方法的指针.指向该方法的指针也被传递给c ++类和

typedef void (*FuncPtr) (status);
FuncPtr myObjCSelectorPointer = (void (*)(status))[self methodForSelector:@selector(statusChanged: )];
cppClassInstance->setFuncPointer(myObjCSelectorPointer)
Run Code Online (Sandbox Code Playgroud)

myObjCSelectorPointer由cppClass持有,如下所示:

void cppClass::setFuncPointer(FunctPtr *ptr)
{
     this->funcPtr = ptr;
}
Run Code Online (Sandbox Code Playgroud)

现在在其他地方,当我尝试调用此指针指向的方法时,如下所示:

status s;
funcPtr(s);
Run Code Online (Sandbox Code Playgroud)

方法被正确调用,但传递给方法的值将丢失.obj-c方法接收完全随机的值.当我尝试使用相同的方式在cpp类中调用方法时,它传递并接收正确的值.

我究竟做错了什么?你能不能像这样调用客观的c方法吗?

c++ function-pointers objective-c

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

是否指向void的指针总是安全的?

#include <stdio.h>

void swap(void *v[], int i, int j)
{
    void *tmp;

    tmp = v[i];
    v[i] = v[j];
    v[j] = tmp;
}

int main(void)
{
    char *s[] = {"one", "two"};
    printf("%s, %s\n", s[0], s[1]);
    swap(s, 0, 1);
    printf("%s, %s\n", s[0], s[1]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

one, two

two, one
Run Code Online (Sandbox Code Playgroud)

警告: no compatible pointer casting, need void**, but char

我使用这个程序来模拟K&R中的交换函数,以演示函数指针的使用,我的问题是它的转换是否void pointer总是安全的,或者是否有任何替换它的方法.

c pointers void

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

函数声明中的宏

我正在查看v4l头文件,我找到了具有以下结构的函数定义.

#define SOME_VAR

SOME_VAR int somefunc(int i,....);
Run Code Online (Sandbox Code Playgroud)

以这种方式使用#define指令的目的是什么?

提前致谢

c c++ c-preprocessor

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

无法识别 makefile 文件格式

我做错了什么?您能否发送一些有用的链接,让我的 makefile 工作更轻松、更好?

get_next_line.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
Makefile:27: recipe for target 'gnl' failed
make: *** [gnl] Error 1
Run Code Online (Sandbox Code Playgroud)

+++

SRC = gnl.c
OBJ = $(SRC:.c=.o)
INCLUDES = gnl.h
NAME = gnl
CFLAGS = -Wall -Werror -Wextra
CC = gcc
DIR = LIBFT

%.o: %.c $(SRC) $(INCLUDES)
        $(CC) $(CFLAGS) -c $<

all: $(NAME)

$(NAME): $(OBJ)
        make -C $(DIR)
        $(CC) $(CFLAGS) -o $(NAME) $(OBJ) -L. $(DIR)/libft.a
clean:
        make clean -C $(DIR) …
Run Code Online (Sandbox Code Playgroud)

c makefile

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

将open_memstream与c99一起使用

我想open_memstream在我的C代码中使用该函数.但是我似乎无法编译它.最小的工作示例如下:

#include <stdio.h>

int main(void) {
    char *buf;
    size_t sz;

    FILE *stream = open_memstream(&buf, &sz);
    putc('A', stream);
    fclose(stream);
}
Run Code Online (Sandbox Code Playgroud)

我还使用以下命令编译它:

gcc -std=c99 -o test test.c

经过一些研究,我发现在包含之前我需要定义一个宏stdio.h.但是,以下示例代码无济于事.

#define __USE_POSIX
#define __USE_XOPEN
#include <stdio.h>
Run Code Online (Sandbox Code Playgroud)

抛出以下编译器警告; 我假设第二个警告是因为第一个警告.

test.c:7:17: warning: implicit declaration of function ‘open_memstream’ [-Wimplicit-function-declaration]
FILE *stream = open_memstream(&buf, &sz);
             ^
test.c:7:17: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
Run Code Online (Sandbox Code Playgroud)

c posix c99

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