проблемы с использованием типов из заголовка stdint.h - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть файл заголовка ptestlib.h, содержимое которого приведено ниже:

#ifndef INCLUDED
#define INCLUDED

#ifndef FALSE
#define FALSE (0)
#endif

#ifndef TRUE
#define TRUE (!FALSE)
#endif

/* optimization levels */

#define OLEVEL1 0x01
#define OLEVEL2 0x02
#define OLEVEL3 0x03
#define OLEVEL4 0x04

/* error codes */

#define EBADNUM 0x00
#define ESYSFAIL 0x01
#define EIOFAIL 0x02

typedef uint32_t Bool;

typedef Bool Test(uint32_t);

extern Bool
init(void);

/* primality test with optimization level 1 */
extern Bool
testl1(uint32_t);

/* primality test with optimization level 2 */
extern Bool
testl2(uint32_t);

/* primality test with optimization level 3 */
extern Bool
testl3(uint32_t);

/* primality test with optimization level 4 */
extern Bool
testl4(uint32_t);

extern const char *gerrsym[3];

#endif

В этом заголовке я использую uint32_t из <stdint.h>. Я не добавляю #include <stdint.h> в этот заголовочный файл, потому что я использую #include <stdint.h> в тех исходных файлах, которые используют ptestlib.h. То есть каждый исходный файл, который использует ptestlib.h, начинается с #include <stdint.h> и #include "ptestlib.h". Проблема в том, что uint32_t называется именем неизвестного типа G CC. Но когда я перемещаю строку #include <stdint.h> в ptestlib.h, то все работает нормально. Почему компилятор не видит uint32_t при включении <stdint.h> через исходный файл?

...