1

是否可以从记事本等外部文件(或者如果需要也可以使用 cpp 文件)调用例程?

例如,我有 3 个文件。主代码.cpp

SubCode_A.cpp <- 不包含在 MainCode.cpp 的标头中

SubCode_B.cpp <- 不包含在 MainCode.cpp 的标头中

MainCode_A.cpp

  #include <iostream>
  using namespace std;

  int main ()
  {

  int choice = 0;
  cin >> choice;

  if (choice == 1)

  {

  "call routines from SubCode_A.cpp;" <- is there a possible code for this?

  }

  else if (choice == 2)

  {

  "call routines from SubCode_B.cpp;" <- is there a possible code for this?

  }

  return 0;
  }

==================================

SubCode_A.cpp 代码

  {
  if (1) //i need to include if statement :)
        cout >> "Hello World!!";

  }

==================================

SubCode_B.cpp 代码

  {

  if (1) //i need to include if statement :)
        cout >> "World Hello!!";

  }
4

4 回答 4

0

无法在另一个可执行文件中调用代码。一个应用程序可以通过库或 DLL 公开“api”(应用程序编程接口),从而允许您调用应用程序使用的某些代码。

但是,在编译您的代码时,编译器需要知道您将要调用的函数的“指纹”:也就是说,它返回什么以及它需要什么参数。

这是通过声明或“原型存根”完成的:

// subcode.h
void subCodeFunction1(); // prototype stub
void subCodeFunction3(int i, int j);

// subcode.cpp
#include <iostream>

void subCodeFunction1()
{
    std::cout << "subCodeFunction1" << std::endl;
}

void subCodeFunction2()
{
    std::cout << "subCodeFunction2" << std::endl;
}

void subCodeFunction3(int i, int j)
{
    std::cout << "subCodeFunction1(" << i << "," << j << ")" << std::endl;
}

// main.cpp
#include "subcode.h"

int main() {
    subCodeFunction1(); // ok
    subCodeFunction2(); // error: not in subcode.h, comment out or add to subcode.h
    subCodeFunction3(2, 5); // ok
    return 0;
}
于 2013-09-17T04:37:55.513 回答
0

您可以只使用#include 语句。Include 指示编译器在#include 点插入指定的文件。所以你的代码是

if (choice == 1)
{
    #include "SubCode_A.cpp"
}
...

而且您不需要 SubCode_?.cpp 文件中的额外大括号,因为它们存在于 MainCode.cpp

当然,编译器只会编译编译时 SubCode 文件中的内容。任何未编译的源代码更改都不会在您的可执行文件中结束。

但是中间源#includes 不适合非常可读的代码。

于 2013-09-16T08:18:53.150 回答
0

在例如SubCode_A.cpp一个函数中制作代码,然后在你的主源文件中声明这个函数并调用它。当然,您必须使用所有源文件进行构建才能创建最终的可执行文件。

于 2013-09-16T06:45:57.073 回答
0

您必须编译这两个代码,声明一个外部函数(例如extern void function (int);,在头文件中。编译将包含此头文件的这两个文件。然后在第三个文件中,您使用它的地方只包含头文件。

但是,当您在编译中包含所有 3 个文件时,它将起作用。

这篇其他帖子可能有用:extern 关键字对 C 函数的影响

于 2013-09-16T06:46:21.963 回答