我想知道是否有可能为特定的库函数生成编译器警告或错误.
例如,我一直在多线程程序上工作,每当我尝试使用像strtok这样的非线程安全函数(而不是strtok_r)时,我想得到编译器警告.
谢谢.
既然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位体系结构.
有什么最好的做法我不知道吗?
我一直致力于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) 我需要这个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)