gpt4 book ai didi

objective-c - 未知类型名称 uint32/uint16

转载 作者:行者123 更新时间:2023-12-04 03:04:50 30 4
gpt4 key购买 nike

在此头文件中,出现错误:未知类型名称 uint32、uint16。我是 Objective-C 的新手,我正在尝试在 Xcode 中导入一个项目。由于上述问题,构建失败。谷歌没有帮助。尝试在 header 搜索路径( xcode unknown type nameunknown type name 'uint8_t', MinGWXcode - how to include c library and header file to cocoa project? )中添加 /stdint/stdint.h 。构建仍然失败。

   /*-------------------------------------------------------------------------
*
* block.h
* POSTGRES disk block definitions.
*
*
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/storage/block.h,v 1.26 2010/01/02 16:58:08 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef BLOCK_H
#define BLOCK_H

/*
* BlockNumber:
*
* each data file (heap or index) is divided into postgres disk blocks
* (which may be thought of as the unit of i/o -- a postgres buffer
* contains exactly one disk block). the blocks are numbered
* sequentially, 0 to 0xFFFFFFFE.
*
* InvalidBlockNumber is the same thing as P_NEW in buf.h.
*
* the access methods, the buffer manager and the storage manager are
* more or less the only pieces of code that should be accessing disk
* blocks directly.
*/
typedef uint32 BlockNumber;

#define InvalidBlockNumber ((BlockNumber) 0xFFFFFFFF)

#define MaxBlockNumber ((BlockNumber) 0xFFFFFFFE)

/*
* BlockId:
*
* this is a storage type for BlockNumber. in other words, this type
* is used for on-disk structures (e.g., in HeapTupleData) whereas
* BlockNumber is the type on which calculations are performed (e.g.,
* in access method code).
*
* there doesn't appear to be any reason to have separate types except
* for the fact that BlockIds can be SHORTALIGN'd (and therefore any
* structures that contains them, such as ItemPointerData, can also be
* SHORTALIGN'd). this is an important consideration for reducing the
* space requirements of the line pointer (ItemIdData) array on each
* page and the header of each heap or index tuple, so it doesn't seem
* wise to change this without good reason.
*/
typedef struct BlockIdData
{
uint16 bi_hi;
uint16 bi_lo;
} BlockIdData;

最佳答案

通常应该使用的类型命名为uint32_t(这些在C99 中定义,头文件stdint.h)。所有其他的都是非标准的,如果可以的话应该避免。现在就您而言,您无法避免使用非标准类型。因此,为了使您的代码能够编译,您需要将非标准名称映射到标准名称,如下所示:

typedef uint32_t uint32;

您需要为 PostgreSQL 中使用的所有类型添加此映射。一种方法是将它们添加到您的预编译头文件 (.pch) 中,或者在包含 PostgreSQL 头文件之前使用您 #include 的这些 typedef 创建一个头文件。

关于objective-c - 未知类型名称 uint32/uint16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623043/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com