小编ziu*_*ziu的帖子

为库函数定义编译器警告/错误

我想知道是否有可能为特定的库函数生成编译器警告或错误.

例如,我一直在多线程程序上工作,每当我尝试使用像strtok这样的非线程安全函数(而不是strtok_r)时,我想得到编译器警告.

谢谢.

c attributes gcc compiler-warnings

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

C中的IPv6地址复制优化

既然memcpy现在应该高度优化,使用显式循环展开来优化Ipv6地址的副本是否仍然有意义?

#include <netinet/in.h>

struct in6_addr IP_1;
struct in6_addr IP_2;
;
;
IP2.__in6_u.__u6_addr32[0] = IP1.__in6_u.__u6_addr32[0];
IP2.__in6_u.__u6_addr32[1] = IP1.__in6_u.__u6_addr32[1];
IP2.__in6_u.__u6_addr32[2] = IP1.__in6_u.__u6_addr32[2];
IP2.__in6_u.__u6_addr32[3] = IP1.__in6_u.__u6_addr32[3];
Run Code Online (Sandbox Code Playgroud)

请注意,上面的代码最适合32位体系结构.

有什么最好的做法我不知道吗?

c linux glibc ipv6 memcpy

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

pthread_sigmask会干扰GDB

我一直致力于Linux下的多线程程序,对信号处理有特殊要求.例如,我需要程序打印单个Ctrl-C输入的统计信息.

我使用pthread_sigmask和sigwait来实现它,即我在创建其余线程之前阻止主线程中的所有非关键信号,并且我启动了在sigwait上阻塞的"捕获器"线程.

初始化(主要):

sigfillset(&set);
sigdelset(&set, SIGSEGV);
sigdelset(&set, SIGBUS);
sigdelset(&set, SIGILL);

s = pthread_sigmask(SIG_BLOCK, &set, NULL);
if (s != 0)
    handle_error_en(s, "pthread_sigmask");

s = pthread_create(&signal_thread, NULL, &sig_thread, (void *) &set);
if (s != 0)
    handle_error_en(s, "pthread_create");
Run Code Online (Sandbox Code Playgroud)

捕手线程例程:

void *sig_thread(void *arg) {
    sigset_t *set = (sigset_t *) arg;
    int s, sig;

    pthread_detach(pthread_self());

    for(;;) {
        s = sigwait(set, &sig);
        if (s != 0)
            handle_error_en(s, "sigwait");
        switch(sig) {
            case SIGINT:
                break;
            case SIGTERM:
                break;
            case SIGUSR1:
                break;
            case SIGUSR2:
                break;
            default:
                break;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c gdb signals pthreads sigint

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

格式化yyymmdd日期

我需要这个javascript函数不拆分yyyy-mm-dd但拆分yyymmdd.当前日期格式为2011-11-02,但此功能需要与20111102一起使用.

脚本:

        function evaluateEventDate(eventdate, date){
        var eventdate = eventdate.split('-');
        var date = date.split('-');

        if (eventdate[0] === 'yyyy')
        {
            eventdate[0] = date[0];
        }

        if (eventdate[1] === 'mm') 
        {
            eventdate[1] = date[1];
        }

        if (eventdate[2] === 'dd')
        {
            eventdate[2] = date[2];
        }

        return eventdate[0]+'-'+eventdate[1]+'-'+eventdate[2];
    };
Run Code Online (Sandbox Code Playgroud)

javascript date slice

-1
推荐指数
1
解决办法
386
查看次数

标签 统计

c ×3

attributes ×1

compiler-warnings ×1

date ×1

gcc ×1

gdb ×1

glibc ×1

ipv6 ×1

javascript ×1

linux ×1

memcpy ×1

pthreads ×1

sigint ×1

signals ×1

slice ×1