我写了三个文件,一个.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的参数是怎么定义。可以提供下完整的程序帮你看下