Форум программистов, компьютерный форум, киберфорум
Наши страницы
C (Си)
Войти
Регистрация
Восстановить пароль
 
Alex_Sava
0 / 0 / 1
Регистрация: 31.07.2014
Сообщений: 84
#1

Макросы для переносимых типов - C (Си)

21.12.2015, 21:58. Просмотров 297. Ответов 3
Метки нет (Все метки)

Всем привет)
У меня наверно глупый вопрос но все же: почему при указании SCNd8 происходит ошибка?С SCNd16 все ок
Заранее спасибо)
http://www.cyberforum.ru/c-beginners/thread842090.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 21:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Макросы для переносимых типов (C (Си)):

Для чего необходимо переопределение стандартных типов?
Добрый вечер, часто сталкиваюсь с переопределением имен стандартных типов...

Для всех базовых типов определить размер в байтах
Доброе всем времени суток. задали лабораторную на си++, но проблема в том что...

#define: макросы
Доброго времени суток. Веду разбирательство с директивами препроцессора и тут...

Как работают макросы?
В своей книге Керниган и Ритчи приводят в пример такой макрос: #define max(A,...

Макросы и переменное количество аргументов
Доброго дня! В двух словах, есть в цикле функция принимающая переменное...

3
sharpey
337 / 132 / 32
Регистрация: 21.09.2008
Сообщений: 428
21.12.2015, 22:20 #2
Пример где? И какая ошибка точно происходит?
0
Alex_Sava
0 / 0 / 1
Регистрация: 31.07.2014
Сообщений: 84
21.12.2015, 22:43  [ТС] #3
sharpey,
C
1
2
3
4
5
6
7
8
#include <stdio.h>
#include <inttypes.h>
int main(){
    int16_t x;
    printf("Input 16-bit number: ");
    scanf("%"SCNd16,x);
    printf("Your number: %"PRId16,x);
}
- все ок
C
1
2
3
4
5
6
7
8
#include <stdio.h>
#include <inttypes.h>
int main(){
    int8_t x;
    printf("Input 8-bit number: ");
    scanf("%"SCNd8,x);
    printf("Your number: %"PRId8,x);
}
- ошибка error: expected ')' before 'SCNd8'
0
sharpey
337 / 132 / 32
Регистрация: 21.09.2008
Сообщений: 428
21.12.2015, 23:25 #4
В 64-битной FreeBSD 10 штатным компилятором clang при указании опции -std=c99 второй пример собрался и отработал без проблем. Mingw32 5.1 к сожалению, не смог переварить с такой же опцией. Здесь отмечают, что это связано с системной библиотекой msvcrt.dll, которую вызывает стандартная библиотека Си.

Ваш пример я бы привел к такому "каноничному" виду:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <inttypes.h>
 
int main(int argc, char **argv)
{
  int8_t x;
 
  printf("Input 8-bit number: ");
  scanf("%"SCNd8, &x);
  printf("Your number: %"PRId8"\n", x);
  return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2015, 23:25
Привет! Вот еще темы с решениями:

Variadic макросы. Гармоническое среднее двух чисел
задание: Гармоническое среднее двух чисел получают вычислением среднего от...

Использование MinGW для создания переносимых программ
Здравствуйте, поговорим про компиляцию?) Я хочу использовать MinGW для...

Возможно ли записать преобразуещее выражение типов даных в макросы?
Желательно показать как это делается.

Подсчет суммы из данных переносимых из Access в Excel
Здравствуйте! Нужно подсчитать сумму из данных переносимых в шаблон построчно....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru