У меня проблемы в Visual Studio 2003 со следующим:
void foo(const char*& str, ...) {
va_list args;
va_start(args, str);
const char* foo;
while((foo = va_arg(args, const char*)) != NULL) {
printf("%s\n", foo);
}
}
Когда я это называю:
const char* one = "one";
foo(one, "two", "three", NULL);
Я получаю:
Место чтения нарушения доступа 0xcccccccc
в строке printf()
- va_arg()
вернул 0xcccccccc. Наконец, я обнаружил, что это первый параметр, являющийся ссылкой, которая нарушает его - если я сделаю его обычным символом *, все в порядке Кажется, не имеет значения, что это за тип; ссылка является причиной сбоя во время выполнения. Это известная проблема с VS2003 или есть какое-то законное поведение? Это не происходит в GCC; Я не тестировал с более новыми Visual Studios, чтобы увидеть, исчезнет ли поведение