从其他人内部调用 C 包装函数
Calling C wrapper functions from within others
我无法 运行 下面的代码。如何获得具有 C 包装器的 C++ 函数,该函数能够调用具有相同属性的另一个函数?
返回错误:
错误:
library.cpp:11:5: error: use of undeclared identifier '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;
}
问题已通过添加此头文件解决。
library.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++ 函数,该函数能够调用具有相同属性的另一个函数?
返回错误:
错误:
library.cpp:11:5: error: use of undeclared identifier '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;
}
问题已通过添加此头文件解决。
library.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();
在文件的开头或您包含的头文件中。