2007
09-27

part1

#include<stdio.h>
void report_count();
void accumulate(int k);
int count = 0;    /*文件作用域,外部链接*/
int main(void)
{
  int value;
  register int i;
  printf(“enter a positive integer(0 to quit):”);
  while(scanf(“%d”,&value) == 1 && value > 0)
  {
      ++count;
      for(i = value;i >= 0; i–)
        accumulate(i);
      printf(“Enter a positive integer (0 to quit):”);
  }
  report_count();
  return 0;
}

void report_count()
{
  printf(“Loop executed %d times\n”,count);
}

part2
#include<stdio.h>

extern int count;

static int total = 0;
/*void accumulate(int k)*/
void accumulate(int k)
{
  static int subtotal = 0;
  
  if (k <= 0)
  {
    printf(“loop cycle:%d\n”,count);
    printf(“subtotal: %d; total ; %d\n”,subtotal,total);
    subtotal = 0;
  }
  else
  {
    subtotal = subtotal + k;
    total = total + k;
  }

我想知道part1 跟part2怎么样链接起来才能运行。


调用问题》有 2 条评论

  1. 伊^人*失 说:

    #include<stdio.h>
    void report_count();
    void accumulate(int k);
          extern int count = 0;    /*文件作用域,外部链接*/
    int main(void)
    {
      int value;
      register int i;
      printf(“enter a positive integer(0 to quit):”);
      while(scanf(“%d”,&value) == 1 && value > 0)
      {
          ++count;
          for(i = value;i >= 0; i–)
            accumulate(i);
          printf(“Enter a positive integer (0 to quit):”);
      }
      report_count();
      return 0;
    }

    void report_count()
    {
      printf(“Loop executed %d times\n”,count);
    }
    static int total = 0;
    /*void accumulate(int k)*/
    void accumulate(int k)
    {
      static int subtotal = 0;
     
      if (k <= 0)
      {
        printf(“loop cycle:%d\n”,count);
        printf(“subtotal: %d; total ; %d\n”,subtotal,total);
        subtotal = 0;
      }
      else
      {
        subtotal = subtotal + k;
        total = total + k;
      }
         }

  2. xstar 说:

    C/C++生成程序基本上经历两个大的过程:
    一个是编译过程,这个过程把各个源代码文件编译成各自的目标文件(Object File)。
    另一个是连接过程,因为上述过程各个目标文件中调用的函数等分散在各自的目标文件中的,需要把他们连接在一起或连接成某种规定格式的可执行文件(程序)。

    上述两个文件在用gcc编译的时候命令如下。

    gcc -c part1.c part1.o    // 参数-c表示只编译不连接,默认有连接操作,这里我们需要编译
    gcc -c part2.c part2.o    // 同上

    gcc part1.o part2.o -o helloworld // 这里表示把part1.o和part2.o连接生成(输出)为helloworld程序。

    上述命令需要的其他参数自己查文件,其他编译器操作基本上和这个一样的。

留下一个回复