0

只是一个 stdarg.h 的小程序,当我将源文件组织在一个源文件中时,如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void
print(const char *, ...);
void
print(const char *format, ...)
{
  va_list vlist;
  va_start(vlist, format);
  vfprintf(stdout, format, vlist);
  va_end(vlist);
  return;
}

int 
main(int argc, char **argv)
{
  const char *message = "Just a test";

  print("==> %s <==\n", message);

  return EXIT_SUCCESS;
}

单个文件中的以下代码在调试时在 gdb 下运行良好,它在我预期的位置停止。但是当我在 3 个文件中组织代码时: print.c main.c test.c

/* print.c */
void
print(const char *, ...);
void
print(const char *format, ...)
{
  va_list vlist;
  va_start(vlist, format);
  vfprintf(stdout, format, vlist);
  va_end(vlist);
  return;
}
/* main.c */
int 
main(int argc, char **argv)
{
  const char *message = "Just a test";

  print("==> %s <==\n", message);

  return EXIT_SUCCESS;
}
/* test.c */
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>

#include "print.c"
#include "main.c"

我使用 command gcc -g test.c,并在 linux 下运行它。在打印中断时,它拒绝中断并继续运行到最后,并发出警告“删除断点 0 错误”。

我想这可能与stdarg.h有关,因为我总是以这种方式组织代码,但第一次遇到问题。

4

0 回答 0