小编sim*_*mar的帖子

如何构造extern结构并定义其typedef

我正在尝试在C中实现树算法.我在头文件中声明了一个完全独立的外部结构(b_tree_ds.h).现在我打算在所有想要使用这个结构的源文件中导入该文件.所以我必须在头文件中使用extern声明它.

现在问题是我想要定义它的typedef.编译器给出了多个存储类的错误.我该怎么做

typedef extern struct node {
    struct node* left;
    struct node* right;
    int key;    // contains value
}NODE;
Run Code Online (Sandbox Code Playgroud)

实际问题如下,我仍然无法解决??? 我最近学会了如何使用带头文件的多个源文件来使代码可移植和分层.为了做到这一点,我厌倦了使用这个主体创建我的树程序.这是我的文件

b_tree_ds.h - 这将包含树节点的数据结构声明,可以调用实现树的不同功能的各种函数(可以在不同的源文件中)

typedef struct node {
    struct node* left;
    struct node* right;
    int key;    // contains value
}NODE;
Run Code Online (Sandbox Code Playgroud)

当我尝试在typedef中添加extern时,extern struct node它会给出多个存储类的错误,但如果我错过它,我会得到多个定义的错误.

这是我的其他源文件

traverse.h - 包含遍历函数的声明

void traverse_print (NODE* p);
Run Code Online (Sandbox Code Playgroud)

这里我也得到了未知标识符NODE的错误

traverse.c - 包含该函数的定义

#include <stdio.h>
#include "b_tree_ds.h"
#include "traverse.h"

void traverse_print(NODE* p)
{
    if(p->left != NULL)
    {
        traverse_print(p->left);
    }

    if (p->right != NULL)
    { …
Run Code Online (Sandbox Code Playgroud)

c structure extern

17
推荐指数
2
解决办法
8万
查看次数

常量,文字和全局变量在哪里获得空间

我最近了解到可以使用指针更改c中常量的值,但字符串文字不可能.可能的解释在于,常量和其他字符串在空间中的可修改区域中被分配空间,而字符串文字在空间(可能是代码段)中进入不可修改的区域.我编写了一个显示这些变量地址的程序.输出也显示出来.

#include <stdio.h>
int x=0;
int y=0;

int main(int argc, char *argv[])
{
    const int a =5;
    const int b;
    const int c =10;
    const char *string = "simar";   //its a literal, gets space in code segment
    char *string2 = "hello";
    char string3[] = "bye"; // its array, so gets space in data segment
    const char string4[] = "guess";
    const int *pt;
    int *pt2;

    printf("\nx:%u\ny:%u Note that values are increasing\na:%u\nb:%u\nc:%u Note that values are dec, so they are on stack\nstring:%u\nstring2:%u …
Run Code Online (Sandbox Code Playgroud)

c memory memory-management

0
推荐指数
1
解决办法
119
查看次数

标签 统计

c ×2

extern ×1

memory ×1

memory-management ×1

structure ×1