Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"?

11.02.2014, 09:13. Показов 4789. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Действительно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdarg.h>
 
int foo (char* k,...) {
  va_list ap;
  va_start (ap, k);
  char x= va_arg (ap, char);
  va_end (ap);
}
 
int main(){
    return 0;
}

In function 'int foo(char*, ...)':
[Warning] 'char' is promoted to 'int' when passed through '...' [enabled by default]
(so you should pass 'int' not 'char' to 'va_arg')
if this code is reached, the program will abort

Короче, всё плохо. У K&R такого ограничения нет, в стандарте тоже:
8.3.5
...
the declaration
int printf(const char*, ...);
declares a function that can be called with varying numbers and types of arguments.
В чём же дело? Может, надо использовать какие-нибудь опции компилятора? g++ 4.6.2
Спасибо, кто откликнется.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2014, 09:13
Ответы с готовыми решениями:

Есть таблица в MYSQL. Там данные не должны повторяться, типа не должны быть дубликаты
но при этом введенное должно сохранится. Например, есть 2 таблицы, в первой статьи, во второй категории статей. Статьи разделены на...

Это значение 5.9875e17 может быть сохранено в переменной, типа: int bool long short float?
#include &lt;iostream&gt; using namespace std; int main() { float a = 5.9875e17; cout&lt;&lt;a; } Этот код выводит 5.9875e+17...

Ошибка BC30800 Аргументы метода должны быть заключены в круглые скобки
Здравствуйте! Пишу медиаплеер. Возникла ошибка. Хочу с ней разобраться. Вот код:Public Class Form1 Private Sub...

21
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
11.02.2014, 17:28
Студворк — интернет-сервис помощи студентам
kravam, тогда остается только предположить полную невменяемость транслятора. Я взял твой код, прогнал через старинный BC 2.0 - вякнул только, что х не используется....
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
11.02.2014, 17:33  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
kravam, тогда остается только предположить полную невменяемость транслятора. Я взял твой код, прогнал через старинный BC 2.0 - вякнул только, что х не используется....
Ну зачем же так грубо... Дай вывод этого кода:

C++
1
2
3
4
5
6
7
8
#include  <stdio.h>
 
////////////////////////////////////
 
int main () {
 printf ("%d %d\n", sizeof (char), sizeof (bool));
 getchar ();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2014, 17:33

Должны быть использованы значения аргументов, которые приведены в таблице вариантов
что делать?

Где должны быть аргументы (слева или справа) по отношению к перегружаемому знаку при перегрузке операций?
Добрый день! Задача была такая-перезагрузить операцию деления /. Класс ster (от слова стерлинг) представляет собой сумму фунт шиллинг...

Обобщенные аргументы переменной длины
Добрый день. Допустим есть кусочек кода: class Miracle&lt;T&gt; { Miracle(T ... arg) { ... } }

Не запускается Thread, аргументы std::thread должны быть вызываемыми после преобразования в rvalues
Здравствуйте друзья. Битый час пытаюсь запустить поток Thread и всегда получаю одну ошибку &quot;аргументы std::thread должны быть...

Реализация аргументов переменной длины
Доброго времени суток! Нужно сделать так, чтобы такие функции как va_list(), va_start() и т.п. работали без подключения стандартного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru