Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 09:13     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #1
Действительно:

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
Спасибо, кто откликнется.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2014, 09:13     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"?
Посмотрите здесь:

возвращаемый тип "main" должен быть "int", а не C++
МАССИВЫ: динамические мас.значение типа "int *" нельзя присвоить сущности типа "int" C++
C++ VS2010 разница между "int _tmain()" и "int main()"
C++ Что делать с ошибкой: C2440: инициализация: невозможно преобразовать "int **" в "int *"
C++ Ошибка: "Значение типа float нельзя присвоить сущности типа int"
Аргумент типа "int **" несовместим с параметром типа "int (*)[26]" C++
Ошибка: "C4430 отсутствует спецификатор типа - предполагается int..." C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 09:48     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #2
Вы документацию читали? Вот посмотрите как надо
http://www.cplusplus.com/reference/cstdarg/va_start/

А если своими словами то вначале посылается не указатель на char а число int сколько аргументов будет идти дальше вот на это и ругается
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 10:10  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #3
Цитата Сообщение от ShadowFirst Посмотреть сообщение
Вы документацию читали? Вот посмотрите как надо
ваша не пляшет. Я всё делаю так, как надо, кроме одного- вместо типа double использую тип char; покажите мне, где написано, что это делать неправильно, и я замолчу.

Цитата Сообщение от ShadowFirst Посмотреть сообщение
А если своими словами то вначале посылается не указатель на char а число int сколько аргументов будет идти дальше вот на это и ругается
В каком начале? Выражайтесь яснее пожалуйста. Количество аргументов нигде не указывается, да и не должно. Нигде нет на этот счёт указаний. Вопрос открыт.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 10:26     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #4
Я не знаю читали вы то что было по ссылке или нет, возьму от туда пример и на примере вам покажу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>      /* printf */
#include <stdarg.h>     /* va_list, va_start, va_arg, va_end */
 
void PrintFloats (int n, ...)
{
  int i;
  double val;
  printf ("Printing floats:");
  va_list vl;
  va_start(vl,n);
  for (i=0;i<n;i++)
  {
    val=va_arg(vl,double);
    printf (" [%.2f]",val);
  }
  va_end(vl);
  printf ("\n");
}
 
int main ()
{
  PrintFloats (3,3.14159,2.71828,1.41421);
  return 0;
}
.

Вы обратили внимание на то как написана функция PrintFloats?
Мы передаем в нее количество параметров и потом сами параметры. Количество параметров у нас имеет тип int. А теперь посмотрим что у вас:
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;
}
А у вас в параметрах функции стоит указатель на char. Теперь смотрим интерфейс функции va_start:
void va_start (va_list ap, paramN);
И пройдемся по каждому параметру:
ap
Uninitialized object of type va_list.
After the call, it carries the information needed to retrieve the additional arguments using va_arg.
If ap has already been passed as first argument to a previous call to va_start or va_copy, it shall be passed to va_end before calling this function.

не вникая в суть того что там написано ясно что первым идет объект созданный от va_list. Тут все у вас нормально. Следующий параметр:
paramN
Name of the last named parameter in the function definition. The arguments extracted by subsequent calls to va_arg are those after paramN.
Вот здесь вот и и должно стаять количество параметров которые выряжаются типом int, а вот следом подавайте параметры типа char.

Короче если вам не понятно то что я написал то сделайте следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdarg.h>
 
int foo (int k,...) {
  va_list ap;
  va_start (ap, k);
  char x= va_arg (ap, char);
  va_end (ap);
}
 
int main(){
    foo (4,'A','B','C','D');
    return 0;
}
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 11:02  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #5
Начнём с конца:
Цитата Сообщение от ShadowFirst Посмотреть сообщение
Короче если вам не понятно то что я написал то сделайте следующее:
не компилится, та же ошибка, а у вас?

Цитата Сообщение от ShadowFirst Посмотреть сообщение
Мы передаем в нее количество параметров и потом сами параметры.
Нет, нет, нет и ещё раз нет. В документации нигде не написано, что первый параметр функции с переменным количеством аргументом, их количество. И потом, если в функцию ЯВНО передаётся количество аргументов, да ещё и известное при компиляции- разве ж она может быть по своей сути с ПЕРЕМЕННЫМ количеством аргументов?

++++++++++++++++++++++++++++++++++++++++++++++++++++++

У K&R написано:
"Функция должна иметь как минимум один аргумент с именем", а дальше, специально, для чего он нужен: "последний именованный аргумент используется макросом va_start для инициализации своей работы." Но никак не для указания количества аргументов!

В примере у них функция так определена:

void minprintf (char* ftm, ...), безо всяких int. Далее, в стандарте тоже ничего об этом не сказано

++++++++++++++++++++++++++++++++++++++++++++++++++++++

Наконец, прототип всем известной printf; вот ссыль:
http://www.cplusplus.com/reference/c...ntf/?kw=printf

C++
1
int printf ( const char * format, ... );
А вас послушать, так она должна выглядеть так:
C++
1
int printf (int kolichestvo_argumentov, ... );
В общем, спасибо за желание помочь, но если кроме НЕкомпилящихся примеров
других аргументов нет, не беспокойтесь больше.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.02.2014, 11:11     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #6
kravam, printf работает не совсем так. Через ... можно передать любые параметры.
http://stackoverflow.com/questions/4...-function-in-c
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 11:23     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #7
И покажите пожалуйста в вашей программе printf
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;
}
В свою очередь я вам то говорил не про printf а про va_start
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5534 / 2568 / 234
Регистрация: 01.11.2011
Сообщений: 6,348
Завершенные тесты: 1
11.02.2014, 11:27     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #8
Цитата Сообщение от kravam Посмотреть сообщение
не компилится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdarg.h>
#include <iostream.h>
 
int foo (int n,...)
{
  va_list ap;
  va_start (ap, n);
  for( int i=0; i<n; i++ )
    cout << va_arg (ap, char);
  va_end (ap);
}
 
int main()
{
foo(6,'A','B','C','D','E','F','G');
 
cin.ignore();
return 0;
}
Цитата Сообщение от kravam Посмотреть сообщение
разве ж она может быть по своей сути с ПЕРЕМЕННЫМ количеством аргументов?
Я бы с удовольствием поглядел код, которым вы будете описывать функции с переменным количеством аргументов.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.02.2014, 11:28     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #9
Можно так развлечься.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
void print(const char* format, ...)
{
   va_list list;
   va_start(list, format);
   for (const char* c = format; *c; ++c)
   {
      if (*c == '%')
      {
         ++c;
         if (*c == 'c')
         {
            char character = va_arg(list, int);
            std::cout << character;
         }
         else if (*c == 'i')
         {
            int integer = va_arg(list, int);
            std::cout << integer;
         }
         else if (*c == 'd')
         {
            double real = va_arg(list, double);
            std::cout << real;
         }
         else
         {
            throw std::logic_error("invalid_format");
         }
      }
      else
      {
         std::cout << *c;
      }
   }
   va_end(list);
}
 
int main()
{
   print("%c %i %d\n", 'c', 10, 10.5);
}
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.02.2014, 11:35     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #10
Цитата Сообщение от kravam Посмотреть сообщение
Наконец, прототип всем известной printf; вот ссыль:
http://www.cplusplus.com/reference/c...ntf/?kw=printf
Цитата Сообщение от kravam Посмотреть сообщение
А вас послушать, так она должна выглядеть так:
мозги включи! магии не существует, а pritnf знает количество аргументов посредством парсинга строки формата.

Цитата Сообщение от kravam Посмотреть сообщение
(so you should pass 'int' not 'char' to 'va_arg')
а это сделано потому что символьный литерал(то что в одинарных кавычках) в языке Си имеет тип int.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 14:56  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #11
Цитата Сообщение от ForEveR Посмотреть сообщение
kravam, printf работает не совсем так. Через ... можно передать любые параметры.
Я это знаю. Вникните в вопрос. Дело не в том, как она работает, а как она ОБЪЯВЛЕНА. А объявлена она так, что первый параметр не int, (а, по утверждению ShadowFirst, у функции со списком переменных параметров, он ничем кроме int быть не может, вот:
Цитата Сообщение от ShadowFirst Посмотреть сообщение
А если своими словами то вначале посылается не указатель на char а число int сколько аргументов будет идти дальше вот на это и ругается
).

++++++++++++++++++++++++++++++++++++++++++++

Цитата Сообщение от ShadowFirst Посмотреть сообщение
В свою очередь я вам то говорил не про printf а про va_start
Про что вы говорили, я помню, не надо делать хорошую мину при плохой игре- а именно, что вторым параметром макроса va_start должен быть первый параметр foo, а он ничем, кроме int быть не может, поскольку он и есть количество параметров, а без него мы как без рук. Ваши слова:
Цитата Сообщение от ShadowFirst Посмотреть сообщение
А если своими словами то вначале посылается не указатель на char а число int сколько аргументов будет идти дальше вот на это и ругается
Вот это вы говорили. А я сказал- "может" и в качестве примера привёл printf. И из того, что она не присутствует в моём коде, не значит, что о ней нельзя говорить и приводить в качестве примера. Кстати.

++++++++++++++++++++++++++++++++++++++++++++

SatanaXIII, первым пераметром foo НЕ ДОЛЖЕН быть int, такое вот требование к задаче. И одним из параметров должен быть char или bool

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Я бы с удовольствием поглядел код, которым вы будете описывать функции с переменным количеством аргументов.
Я не умею, и потому попросил об этом товарищей. А вот K&R умеют и поэтому я сдул у них код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include  <stdarg.h>
#include  <stdio.h>
void minprintf(char  *fmt,  ...){
     va_list ap; 
     char  *p,  *sval;
     int  ival;
     double  dval;
 
     va_start(ap, fmt); 
     for (p =  fmt;  *p;  p++)  {
        if (*p !=  '%' )  { 
           putchar(*p);
           continue;
     } 
     
     switch (*++p) {
       case  'd':
         ival =  va_arg(ap,  int);
         printf  ("%d",  ival);
       break;
       case 'f':
         dval = va_arg(ap, double);
         printf("%f",  dval);
      break; 
      case  's':
      for  (sval  = va_arg(ap, char *);  *sval;  sval++)
          putchar(*sval);
      break;
      default:
          putchar(*p);
          break;
     }
     va_end(ap);  
 }
}
 
////////////////////////////////////
 
int main () {}
Это компилится (и безо всяких int параметром для va_start, для ShadowFirst пишу; щас опять прибежит и скажет, что туда надо int пихать ). Но если добавить, такие, например, строчки:

C++
1
2
     char x= va_arg(ap, char);
     bool y= va_arg(ap, bool);
То всё, кранты. То есть небольшая подвижка в вопросе всё же есть- в первом приближении списки аргументов переменной длины, работают со всеми типами, кроме char и bool; почему? Предполагаю, дел связано с их размерами

++++++++++++++++++++++++++++++++++++++++++++

Цитата Сообщение от ForEveR Посмотреть сообщение
Можно так развлечься.
Не нужно никак развлекаться. Надо понять, почему среди аргументов в списке переменной длины не может быть bool или char, учитывая то, что такая невозможность нигде не оговорена- не в стандарте не у K&R

++++++++++++++++++++++++++++++++++++++++++++

Цитата Сообщение от Jupiter Посмотреть сообщение
мозги включи! магии не существует, а pritnf знает количество аргументов посредством парсинга строки формата.
Вот веришь, нет- способ, коим printf находит количество аргументов АБСОЛЮТНО не имеет отношения к рассматриваемому вопросу. Так что не фиг на ровном месте умничать. А вот способ, благодаря которому printf НЕ УЗНАЁТ количество аргументов (по первому параметру) очень даже в этом разговоре БЫЛ к месту (пока я не определил, что и без первого параметра int оно работает)- ShadowFirst, клянётся, что именно через этот параметр printf (посредством передачи параметра макросу va_start) узнаёт это количество. Так что скажи это ShadowFirstу. Научи его, как printf определяет количество аргументов.

Цитата Сообщение от Jupiter Посмотреть сообщение
а это сделано потому что символьный литерал(то что в одинарных кавычках) в языке Си имеет тип int.
, выше смотри код, там вообще не передаются аргументы, ни в кавычках, никак, а компилятор всё равно не переваривает ни bool, ни char.

++++++++++++++++++++++++++++++++++++++++++++

Собственно если бы это было оговорено где-то и сказано- с bool и char не работает из-за размеров, то всё было бы понятно. Всё ж таки, передаваемый массив массив разбивается на ячейки размером по sizeof(int) аргументов, и если в нём встретятся char или bool, то они бы всё испортили. Но я нигде не нашёл такого ограничения.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5534 / 2568 / 234
Регистрация: 01.11.2011
Сообщений: 6,348
Завершенные тесты: 1
11.02.2014, 15:23     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #12
kravam, получается, что ваш код выдает ошибку, а пример K&R отрабатывает у вас же хорошо?
Отсюда напрашивается самый логичный вывод - где-то при переделывании их примера вы допустили косипульку. Все. Ваш пример из стартового поста у меня отрабатывает так же без ошибок (ну тех, которые вы указали).
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 15:55  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #13
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Отсюда напрашивается самый логичный вывод
А есть ещё самый самый логичный вывод- коды принципиально разнятся в некотором месте, которое и выдаёт ошибку. Это место надо найти. Вот оно:
В моём коде есть такой оператор:
C++
1
char x= va_arg (ap, char);
,а у K&R нет.

Есть и другие различия, но это принципиальное, оно и выдаёт ошибку. Если она называется кописюлька, мне всё равно. Но написал я её умышлено, потому что я изучаю программирование. Какой у вас компилятор?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5534 / 2568 / 234
Регистрация: 01.11.2011
Сообщений: 6,348
Завершенные тесты: 1
11.02.2014, 16:00     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #14
Цитата Сообщение от kravam Посмотреть сообщение
Какой у вас компилятор?
Борландовый.
Кликните здесь для просмотра всего текста
Слава борланде!


Цитата Сообщение от kravam Посмотреть сообщение
Но написал я её умышлено, потому что я изучаю программирование.
То есть по сути вопрос в названии темы был для затравки? Вам интересно именно пощупать поведение различных методов в различных комбинациях? Надо было так сразу и говорить.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 16:13  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #15
Цитата Сообщение от SatanaXIII Посмотреть сообщение
То есть по сути вопрос в названии темы был для затравки?
нет, вопрос был как он был. Но в ПРОЦЕССЕ обсуждения, вопрос видоизменился, конкретизировался. Если раньше он стоял так: "почему только типы int?" то сейчас он стоит по-другому "почему все типы кроме char и bool" и я об этом написал уже:

Цитата Сообщение от kravam Посмотреть сообщение
списки аргументов переменной длины, работают со всеми типами, кроме char и bool; почему?
По-прежнему считаю, что смотреть надо в сторону размера аргументов. А ваш компилятор, быть может, неявно приводит при передаче аргументов все типы к "int" и потому не ругается, я не знаю. А утверждать как некоторые штатские, на разобравшись, не буду.

Добавлено через 1 минуту
Самое меньшее, что я могу предположить, что мой компилятор чуть-чуть отходит от стандарта. Жаль.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 16:13     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #16
kravam, Вот это вы говорили. А я сказал- "может" и в качестве примера привёл printf. И из того, что она не присутствует в моём коде, не значит, что о ней нельзя говорить и приводить в качестве примера. Кстати.

Вы слышали о таком понятии как прототипы функций? И то что аргументы передаваемые в эти функции должны соответствовать ее прототипу. Или вы считаете что в любые функции можно посылать любые значения даже если это не предусмотрено прототипом?!

По этому задавая мутные вопросы вы будете получать такие же ответы.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 16:49  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #17
Цитата Сообщение от ShadowFirst Посмотреть сообщение
Вы слышали о таком понятии как прототипы функций? И то что аргументы передаваемые в эти функции должны соответствовать ее прототипу. Или вы считаете что в любые функции можно посылать любые значения даже если это не предусмотрено прототипом?!
Если вы применительно к моей функции, то, согласно документации, передача аргументов char и bool как-раз-таки ПРЕДУСМОТРЕНА прототипом. Откройте стандарт и посмотрите. А они не передаются.

Добавлено через 3 минуты
И кстати, если уж продолжать про прототип, про который вы, я вижу, слышали, то первый параметр должен быть таким, который может быть конвертирован в const char*, то есть в первом посте тоже ошибка. Но опять_таки, она уже была исправлена, когда я привёл код K&R, просто говорю о ней сейчас. Прочёл в стандарте.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.02.2014, 16:55     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #18
kravam, Вообще можно посмотреть сюда.
http://www.gnu.org/software/libc/man...rgument-Macros

Особенно выделяется по-моему:
The type of the value returned by va_arg is type as specified in the call. type must be a self-promoting type (not char or short int or float) that matches the type of the actual argument.
Байт
 Аватар для Байт
14493 / 9207 / 1327
Регистрация: 24.12.2010
Сообщений: 16,868
11.02.2014, 17:10     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #19
Цитата Сообщение от kravam Посмотреть сообщение
[Warning]
А может быть дело именно в этом? Принимать-то она принимает. Но при этом в ее железную (трансляторную) душу закрадываются сомнения. Вот она и делится ими с вами. Мол, парень, может ты думал про int? Это в технике, кажется, называется "маниакальное поведение", и Бог ей судья. Но ведь транслирует? И работает?
Кстати, у современных трансляторов такая маниакальность встречается на каждом шагу. И чем дальше - тем чаще...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2014, 17:14     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"?
Еще ссылки по теме:

Вывести все значения массива типа int в поле "static" C++
Исправить ошибку компиляции "error C4430: отсутствует спецификатор типа - предполагается int" C++
C++ Аргументы функции: что значит "большие" и "небольшие" аргументы?
Значение типа "void" нельзя использовать для инициализации сущности типа "int" C++
Исправить ошибку C2664: fcvt: невозможно преобразовать параметр из "int" в "int *" C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
11.02.2014, 17:14  [ТС]     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? #20
Цитата Сообщение от Байт Посмотреть сообщение
Но ведь транслирует? И работает?
Компилирует, но не работает при char и bool, ибо предупреждает- "if this code is reached, the program will abort"
Yandex
Объявления
11.02.2014, 17:14     Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"?
Ответ Создать тему
Опции темы

Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru