我有一个在 Unix 中编译得很好的旧 C 项目。我想在 Lion 上的 Xcode 中构建它,所以我创建了一个新的 Xcode 项目并添加了所有文件(除了 makefile)。
无论如何,我在构建时遇到了许多“语义问题”。有谁知道这里会发生什么?指针的所有这些问题似乎很奇怪。在 Xcode 中构建项目与使用 make 真的有什么不同吗?这与osx有关吗?
例如:
unsigned char *p = b->buf + adbuf_used(b);
给出错误:
使用 'char *' 类型的表达式初始化 'unsigned char *' 在指向具有不同符号的整数类型的指针之间转换
和
printf("sizeof(unsigned int) = %d\n", sizeof(unsigned int));
给出错误:
转换指定类型“int”,但参数的类型为“无符号”
和
printf("%2d, ", p-cset);
给出错误:
转换指定类型“int”,但参数的类型为“long”
和
if (getsockname(sock_rt, (struct sockaddr *)&iface_out, &len) == -1 ) {
给出错误:
将“int *”传递给“socklen_t *”(又名“unsigned int *”)类型的参数会在指向具有不同符号的整数类型的指针之间进行转换