只是一个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"
我使用命令gcc -g test.c
,并在linux下运行它。在打印时断开,它在一个警告“错误删除断点0”内拒绝中断并继续运行到最后。
我想这可能与stdarg.h有关,因为我总是以这种方式组织代码,但第一次遇到问题。