我都定义了却说我没有定义

我写了三个文件,一个.h,两个.cpp
头文件的内容:

static void dy1(gs* pc);

第一个.cpp的内容:

static void dy1(gs* pc) {
    int d = 0;
    if (d == pc->i) {
        printf("暂无入驻商家");
    }
    else {
        printf("名称\t地址\t数字码\n");
        for (; d < pc->i; d++) {
            printf("%s\t%s\t%d\t\n", pc->shu[d - 1].name, pc->shu[d - 1].add,d);
        }                          
    }                                                      
}

第二个.cpp的内容:

 dy1(pc);

两个.cpp均有引用头文件,但是系统却一直提示我”错误 C2129 静态函数“void dy1(gs *)”已声明但未定义“,这是为什么呢?

从您提供的信息来看,可能是因为您的头文件中声明了dy1()函数,但是在两个.cpp文件中均未定义该函数。这可能会导致编译器无法将函数的实现与其声明进行匹配。

要解决这个问题,您需要确保在其中一个.cpp文件中定义了dy1()函数。例如,如果您的头文件名为example.h,则可以在example.cpp文件中定义该函数,如下所示:

#include "example.h"
#include <stdio.h>

static void dy1(gs* pc) {
    int d = 0;
    if (d == pc->i) {
        printf("暂无入驻商家");
    }
    else {
        printf("名称\t地址\t数字码\n");
        for (; d < pc->i; d++) {
            printf("%s\t%s\t%d\t\n", pc->shu[d - 1].name, pc->shu[d - 1].add,d);
        }                          
    }                                                      
}

然后,在另一个.cpp文件中包含头文件并调用该函数,如下所示:

#include "example.h"

// 在某个函数中调用dy1()函数
void someOtherFunction() {
    gs myGs; // 假设有一个gs类型的变量

    // 调用dy1()函数
    dy1(&myGs);
}

这样,您应该可以成功编译和运行您的程序。

第二个cpp文件应该是在函数里调用这个dy1(pc)函数,但不知道这个pc的参数是怎么定义。可以提供下完整的程序帮你看下