【发布时间】:2022-01-23 00:25:30
【问题描述】:
我做了一个如下所示的短代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
int32_t main(int32_t argc, int8_t *argv[])
{
int32_t i;
if (argc < 1)
{
printf("Error\n");
}
for (i = 0 ; i < argc ; i++)
{
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
如下所示编译,然后我看到如下警告。
$ gcc -W -Wall main.c
main.c:6:9: warning: second argument of ‘main’ should be ‘char **’ [-Wmain]
int32_t main(int32_t argc, int8_t *argv[])
使用 int8_t 的最佳做法是什么?
【问题讨论】:
-
char和signed char(int8_t可能是 typedef 的)是不同的类型,即使char已签名。见stackoverflow.com/questions/2054939/…