只是一个 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有关,因为我总是以这种方式组织代码,但第一次遇到问题。