我无法运行以下代码。如何使用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
答案 0 :(得分:4)
ifelseFn
在使用后定义。
您应该在使用之前移动其定义,或者在第一次使用之前添加声明,例如: :
extern "C" void ifelseFn();
在文件的开头或包含的头文件中。