在您的 $PATH 中使用/usr/xpg4/bin
仅选择符合标准的命令,它不会更改程序中的函数调用以使用符合标准的版本。
如Solaris 标准 (5) 手册页中所述,您需要使用各种 #defines 和编译器标志来指定各种标准的合规性。
例如,获取您的代码片段并将其扩展为这个独立的测试程序:
#include <sys/types.h>
#include <time.h>
#include <stdio.h>
int main(int argc, char **argv)
{
time_t lt;
struct tm *ltime;
char curr_date[80];
lt = time(NULL);
ltime = localtime(<);
strftime(curr_date, sizeof(curr_date), "%m/%d/%y%C", ltime);
printf("%s\n", curr_date);
return 0;
}
然后用不同的标志编译显示不同的行为:
% cc -o /tmp/strftime /tmp/strftime.c
% /tmp/strftime
06/30/13Sun Jun 30 20:28:00 PDT 2013
% cc -xc99 -D_XOPEN_SOURCE=600 -o /tmp/strftime /tmp/strftime.c
% /tmp/strftime
06/30/1320
默认模式向后兼容传统的 Solaris 代码,第二种形式要求符合 C99 和 XPG6 (Unix03) 标准。