extern typedef enum
时间: 2023-09-28 12:09:26 浏览: 55
引用中提到,typedef适用于定义新的数据类型或别名,而`#define`适用于定义常量和函数宏等。
对于问题1,根据typedef int * ptr_t;,p1和p2都是指向int类型的指针,因此p1和p2的类型都是int*。
对于问题2,根据#define PTR_T int* PTR_T p1, p2;,PTR_T被定义为int*,因此p1和p2的类型都是int*。
引用提到,在函数的返回值前加上extern可以将函数变为一个外部函数。由于默认情况下函数就是外部函数,因此在开发中一般不需要显式地写extern。
引用给出了一系列的#define定义,其中包括MAX_VERTEX_NUM、INFINITY、EXTERN、OK、ERROR、MAX和MAXW等常量。而typedef用于定义新的数据类型,如定义了Status为int类型、VisitIf为bool类型、VertexType为char类型等。
关于extern typedef enum的问题,根据提供的引用内容,没有明确提到extern typedef enum的定义,因此无法给出具体的答案。请提供更多相关信息以便回答。
相关问题
解释这段代码#ifndef _MENU_H_ #define _MENU_H_ // types of menu typedef enum {MAIN, ADMIN, USER, BUYER, SELLER, INFO, MODIFY, GOOD} Menu; // the number of option for different menus extern const int optionNum[]; /** * @brief a menu is what gives some prompt and gets a user input * * @param type menu type * @return int user input */ int menu(Menu type); #endif
这段代码是一个菜单头文件,它使用了条件编译指令#ifndef、#define和#endif来防止多次包含。
首先,代码定义了一个枚举类型Menu,用于表示不同类型的菜单。枚举值包括MAIN、ADMIN、USER、BUYER、SELLER、INFO、MODIFY和GOOD,分别代表主菜单、管理员菜单、用户菜单、买家菜单、卖家菜单、信息菜单、修改菜单和商品菜单。
然后,代码声明了一个名为optionNum的外部常量数组。这个数组可能是用来存储不同菜单的选项数量。由于这是一个声明,具体的定义可能在其他地方进行。
接下来,代码声明了一个名为menu()的函数原型。该函数接受一个Menu类型的参数type,用于指定菜单类型。函数返回一个整数,表示用户的输入。
最后,代码使用#endif结束了条件编译指令,确保只有当_MENU_H_宏未定义时才会包含这段代码。
需要注意的是,这只是一个头文件,它只提供了一些声明和函数原型,并没有提供具体的实现。具体的实现细节可能在其他地方进行。
在linux下写一个c语言的头文件.h,其中有一个结构体变量是引用另外一个C++的.h文件中定义的枚举变量,使用extern c使得能够编译通过这个.c文件
可以按照以下步骤编写头文件:
1. 在头文件中包含需要引用的C++头文件,并使用extern "C"包裹起来,表示使用C语言的编译方式。
```c
#ifdef __cplusplus
extern "C" {
#endif
#include "other_cpp_header.h"
typedef struct {
enum Color color;
int size;
} MyStruct;
#ifdef __cplusplus
}
#endif
```
2. 在C++头文件中定义枚举变量:
```cpp
// other_cpp_header.h
enum Color {
RED,
GREEN,
BLUE
};
```
3. 在C文件中包含上述头文件,然后使用MyStruct结构体变量即可:
```c
#include "my_header.h"
int main() {
MyStruct s;
s.color = RED;
s.size = 10;
return 0;
}
```
编译时需要先将C++头文件编译成目标文件,然后再将C文件和目标文件链接起来:
```bash
g++ -c other_cpp_header.h -o other_cpp_header.o
gcc main.c other_cpp_header.o -o main
```