我有一些继承的FlexLM代码,它将整数转换为需要在32位和64位机器上工作的指针.使用scanf从程序的参数的argc填充整数以读取整数值.
我应该如何可靠地读取argc字符串以获得适合分配指针的值,以便它可以在32位和64位计算机上运行?
目前代码看起来像这样:
// FlexLM includes this:
typedef char * LM_A_VAL_TYPE; /* so that it will be big enough for */
/* any data type on any system */
// My main() includes this:
[...]
if (!strcmp(argv[i], "-maxlen")) {
int max = 0;
i++;
if (i >= argc) {
break;
}
sscanf(argv[i], "%d", &max);
if (!max) {
fprintf(stderr, "Error: -maxlen %s Invalid line length\n", argv[i]);
} else {
lc_set_attr(lm_job, LM_A_MAX_LICENSE_LEN, (LM_A_VAL_TYPE)max);
}
}
[...]
Run Code Online (Sandbox Code Playgroud)
起初我以为我可以使用uintptr_t,但我怎么能相应scanf地知道尺寸呢?也许我应该把它作为指针值使用%p …