gpt4 book ai didi

c++ - 从其他人内部调用 C 包装函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:57:43 25 4
gpt4 key购买 nike

我无法运行下面的代码。如何获得具有 C 包装器的 C++ 函数,该函数能够调用具有相同属性的另一个函数?

返回错误:

错误:library.cpp:11:5:错误:使用了未声明的标识符“ifelseFn”
ifelseFn();
^

代码:

#include "library.h"
#include <iostream>

extern "C" void loopFn() {
int sum = 0;
std::cout << "Adding loop function call...\n";
for (size_t i = 0; i < 5; i++) {
sum += i;
}
std::cout << "Sum of value for for loop is: " << sum << std::endl;

ifelseFn();
}

extern "C" void whileFn() {
int sum = 0;
size_t i = 0;
std::cout << "Adding while function call...\n";
while (i < 5) {
sum += i;
i++;
}
std::cout << "Sum of value for while loop is: " << sum << std::endl;
}

extern "C" void ifelseFn() {
std::cout << "Adding ifelse function call...\n";
if (0) {
std::cout << "If portion!\n";
} else {
std::cout << "Else portion!\n";
}
}

int main(int argc, char* argv[])
{
loopFn();

return 0;
}

通过添加这个头文件解决了问题。

库.h

#ifndef LIBRARY_H
#define LIBRARY_H

extern "C" void loopFn();
extern "C" void whileFn();
extern "C" void ifelseFn();

#endif

最佳答案

ifelseFn 在使用后定义。

你应该在使用之前移动它的定义或者在它第一次使用之前添加一个声明,例如:

extern "C" void ifelseFn(); 

在文件的开头或您包含的头文件中。

关于c++ - 从其他人内部调用 C 包装函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com