小编sim*_*onc的帖子

在并行运行中使用gcov进行代码覆盖

我使用gcov为项目中的几个文件设置了C / C ++代码覆盖率。可执行文件正在并行运行。这导致一些共享的代码并行运行。

我正在损坏的.da文件或大小为零的.da文件。并行运行是否有问题?

因为两个或多个可执行实例正尝试在同一个.da文件中写入内容,以便为执行中的每个语句写入覆盖率计数?

如果是这样,是否有任何解决方法?

使用的Gcov版本是1.5

c++ parallel-processing gcov

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

C - 在第一次recv()调用后"传输端点未连接"

我刚开始用C学习网络编程.我做了一些测试,但是我遇到了错误.

我有一个客户:

client.c

#include <string.h>
#include <netdb.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>

int main(void)
{
    struct addrinfo hints, *res;
    int sock;

    memset(&hints, 0, sizeof hints);
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype = SOCK_STREAM;

    getaddrinfo("localhost", "5996", &hints, &res);
    sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
    connect(sock, res->ai_addr, res->ai_addrlen);
    char data[64];
    int len = 13;
    int br = recv(sock, data, len, 0);
    printf("%s\n%s\n%d\n", strerror(errno), data, br);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和服务器:

server.c

#include <string.h>
#include <netdb.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h> …
Run Code Online (Sandbox Code Playgroud)

c sockets recv

5
推荐指数
1
解决办法
9556
查看次数

strtok如何还包括分隔符作为标记

现在我已经设置了代码来将我的字符串分成带有分隔符,=和空格的标记.我还想将特殊字符作为标记包含在内.

char * cstr = new char [str.length()+1];
strcpy (cstr, str.c_str());

char * p = strtok (cstr," ");

while (p!=0)
{
    whichType(p);
    p = strtok(NULL," ,;=");
}
Run Code Online (Sandbox Code Playgroud)

所以现在,如果我打印出一个字符串的标记,就像asd sdf qwe wer,sdf;wer它一样

asd
sdf
qwe
wer
sdf
wer
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像

asd
sdf
qwe
wer
,
sdf
;
wer
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.谢谢

c++ token delimiter strtok

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

通过引用访问va_arg宏是不好的样式还是不正确?

我得到了一行代码,这非常有用:

void *test;
/*...*/
test = &va_arg(arg_list, int);
Run Code Online (Sandbox Code Playgroud)

我只是尝试这个,正如我想的那样,这是一个宏而不是一个函数,所以它可能会起作用.我并没有真正期待它能够发挥作用,但它完全符合我的要求.

但是现在我不确定这种风格可能发生的地址的生命周期和其他风险.

谁能告诉我为什么使用va_arg这种方式的参考是安全/不安全的?

c reference variadic-functions

5
推荐指数
1
解决办法
135
查看次数

指示win32线程在单个处理器核心上运行

我有一个测试程序,如果它可以依赖于在Windows上按严格优先级顺序安排的线程,那将会简单得多.我看到一个低优先级线程与更高优先级的线程一起运行,并想知道是否发生了这种情况,因为不同的线程正在不同的处理器内核上进行调度.

有没有办法强制进程中的所有Win32线程使用单个处理器核心? SetThreadAffinityMask看起来可能很有趣,但它的文档并不完全清楚,我不知道如何使用它.

windows winapi multithreading

4
推荐指数
1
解决办法
1500
查看次数

C中的stray\223和\ 224错误

我有一些其他错误的错误,我不明白为什么:

[错误]在程序中迷路'\'223'

[错误]在程序中错误'\ 224'在函数'int readData(GymRecord**)'中:

[错误]'q2'未在此范围内声明

[错误]请求成员'name'在'*(dir +((long long unsigned int)((long long unsigned int)k)*8ull)))',这是非类型'GymRecord*'

[错误]请求成员'age'在'*(dir +((long long unsigned int)((long long unsigned int)k)*8ull)))',这是非类型'GymRecord*'

int readData(struct GymRecord *dir[]){

    FILE *fdir=fopen(“q2.txt”,"r");
    char buff[MBUFF];
    int k=0;

    while(k<MDIR && fgets(buff,MBUFF-1,fdir)){
        strcpy(dir[k].name,strtok(buff,","));
        dir[k].age=atol(strtok(NULL,"\n"));
        k++;
    }

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

c

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

unsigned int(32bit)to unsigned long long(64bit)

在下面的代码中,我乘以0xffffffff2 unsigned int(32位)并将其存储在unsigned long long(64位)中.为什么我没有得到实际输出8589934588.相反,我得到了4294967294.提前致谢.输出:sizeof i = 4 Sizeof J = 8 2xi = 4294967292

/* Code starts here */
#include <stdio.h>
#include <stdlib.h>

int main (void) 
{
    unsigned int i=4294967294;
    unsigned long long j=i*2;
    printf("Sizeof i=%d\n", sizeof(i));
    printf("Sizeof J=%d\n", sizeof(j));
    printf("2xi=%llu\n", j);

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

c unsigned-long-long-int unsigned-integer

4
推荐指数
1
解决办法
1474
查看次数

为什么printf("%d \n",printf("%d\b",a))以这种方式工作?

这是我的C代码,用gcc编译.

#include<stdio.h>

int main() 
{ 
    int a=1; 
    switch(a)
    {
       int x=10;
       case 1:
           printf("%d\n",printf("%d\b",x));
           break;
       default:
           printf("%d\n",printf("%d\b",x));
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

printf()应该返回它成功打印的元素数. printf("%d\b", x)应该自己打印10(因为\ b将打印指针后退一步(10中的数字0)并且之后没有任何内容可以打印.所以它应该只打印10.这是2个字符.现在外部printf会显示2.输出应该是102.我实际看到的输出是2.

如果嵌套printfs是记住打印指针的位置?我的意思是,如果\b内部有一个printf,它将使打印指针落后一步.当控制现在进入外部时printf,记住改变的位置了吗?它会覆盖最后一个角色吗?

c printf escaping

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

如何从运行的内核模块确定Linux内核是32位还是64位

这是交易.我想编写一个内核模块,它取决于内核类型(32位或64位).当且仅当内核为32位并且如果内核为64位时应包含的某些代码行,我希望将一些代码行包​​含在模块中.

对于这种情况,有没有类似#if LINUX_VERSION_CODE <KERNEL_VERSION(2,6,26)的内容?

c linux operating-system kernel linux-kernel

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

差值为n/= 10和n = n/10

执行速度n/=10n=n/10执行速度之间有什么区别吗?

就像n----n在他们的执行速度明智也有不同...

c microcontroller

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