Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 01:10   #1
Assylkhan
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 2
Вопрос Проблема с компиляцией в VS8 программы,написанной на Си.

Доброго всем времени суток, уважаемые любители и знатоки!

У меня возникла проблема с компиляцией готового текста программы, написанной на Си, в VS 2008. Помогите кто чем сможет, как-нибудь исправить ошибку.

Дело в том, что я только начал учиться программировать, а тут вот такая проблема...

Помещаю прогу, компилирую, VS выдает следующее:
"fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory" Что это такое и как исправить ошибку?

Вот текст программы:

Код:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define R1_LEN			17
#define R2_LEN			19
#define R3_LEN			21
#define R4_LEN			23

#define R1_MASK			0x010020 /* tap bits: 5, 16 */
#define R2_MASK			0x04100C /* tap bits: 2, 3, 12, 18 */
#define R3_MASK			0x100002 /* tap bits: 1, 20 */
#define R4_MASK			0x400100 /* tap bits: 8, 22 */

#define R1_CLKBIT		8
#define R2_CLKBIT		9
#define R3_CLKBIT		10
#define R1_R4_CLKBIT		0
#define R2_R4_CLKBIT		1
#define R3_R4_CLKBIT		2

#define OUTPUT_LEN		90 /* 720 bits */
#define	TESTBIT(R, n)		(((R) & (1 << (n))) != 0)

uint32_t clock(uint32_t lfsr, uint32_t mask) {
  return (lfsr >> 1) ^ (-(lfsr&1)&mask);
}

uint32_t combine(uint32_t c, uint32_t r1, uint32_t r2, uint32_t r3) {
  uint32_t x10, x11, x20, x21, x30, x31;

  x10 = r1 & 1;
  x11 = (r1 >> 1) & 1;
  x20 = r2 & 1;
  x21 = (r2 >> 1) & 1;
  x30 = r3 & 1;
  x31 = (r3 >> 1) & 1;

  return ((x11&x10&c) ^ (x20&x11&x10) ^ (x21&x10&c) ^ (x21&x20&x10) ^ 
          (x30&x10&c) ^ (x30&x20&x10) ^ (x11&c) ^ (x11&x10) ^ (x20&x11) ^ 
          (x30&c) ^ (x31&c) ^ (x31&x10) ^ (x21) ^ (x31));
}

void dsc_keystream(uint8_t *key, uint32_t iv, uint8_t *output) {

  uint8_t input[16];
  uint32_t R1, R2, R3, R4, N1, N2, N3, COMB;
  int i, keybit;

  memset(output, 0, OUTPUT_LEN);

  input[0] = iv&0xff;
  input[1] = (iv>>8)&0xff;
  input[2] = (iv>>16)&0xff;
  for (i = 3; i < 8; i++) {
	input[i] = 0;
  }
  for (i = 0; i < 8; i++) {
 	input[i+8] = key[i];
  }
  	
  R1 = R2 = R3 = R4 = COMB = 0;

  /* load IV || KEY */
  for (i = 0; i < 128; i++) {
    keybit = (input[i/8] >> ((i)&7)) & 1;
    R1 = clock(R1, R1_MASK) ^ (keybit<<(R1_LEN-1));
    R2 = clock(R2, R2_MASK) ^ (keybit<<(R2_LEN-1));
    R3 = clock(R3, R3_MASK) ^ (keybit<<(R3_LEN-1));
    R4 = clock(R4, R4_MASK) ^ (keybit<<(R4_LEN-1));
  }

  for (i = 0; i < 40 + (OUTPUT_LEN*8); i++) {
    /* check whether any registers are zero after 11 pre-ciphering steps.
     * if a register is all-zero after 11 steps, set input bit to one
     * (see U.S. patent 5608802)
     */
    if (i == 11) {
      if (!R1) R1 ^= (1<<(R1_LEN-1));
      if (!R2) R2 ^= (1<<(R2_LEN-1));
      if (!R3) R3 ^= (1<<(R3_LEN-1));
      if (!R4) R4 ^= (1<<(R4_LEN-1));
    }

    N1 = R1;
    N2 = R2;
    N3 = R3;
    COMB = combine(COMB, R1, R2, R3);

    if (TESTBIT(R2, R2_CLKBIT) ^ TESTBIT(R3, R3_CLKBIT) ^ 
	TESTBIT(R4, R1_R4_CLKBIT))
      N1 = clock(R1, R1_MASK);
    if (TESTBIT(R1, R1_CLKBIT) ^ TESTBIT(R3, R3_CLKBIT) ^
	TESTBIT(R4, R2_R4_CLKBIT))
      N2 = clock(R2, R2_MASK);
    if (TESTBIT(R1, R1_CLKBIT) ^ TESTBIT(R2, R2_CLKBIT) ^ 
	TESTBIT(R4, R3_R4_CLKBIT))
      N3 = clock(R3, R3_MASK);

    R1 = clock(clock(N1, R1_MASK), R1_MASK);
    R2 = clock(clock(N2, R2_MASK), R2_MASK);
    R3 = clock(clock(N3, R3_MASK), R3_MASK);

    R4 = clock(clock(clock(R4, R4_MASK), R4_MASK), R4_MASK);

    if(i >= 40) {
      output[(i-40)/8] |= ((COMB) << ( 7-((i-40)&7)));
    }
  }
}

int main(int argc, char**argv) {
  uint8_t key[8];
  uint8_t output[OUTPUT_LEN];

  if (argc != 2) {
    fprintf(stderr, "usage: %s iv\n", argv[0]);
    exit(1);
  }

  if (read(STDIN_FILENO, key, 8) < 8) {
    fprintf(stderr, "short read\n");
    exit(1);
  }

  dsc_keystream(key, atoi(argv[1]), output);
  
  write(STDOUT_FILENO, output, 2048);
  return 0;
}

Последний раз редактировалось pproger; 18.06.2011 в 16:23.
Assylkhan вне форума Ответить с цитированием
Старый 18.06.2011, 05:05   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

http://www.google.ru/search?client=o...hannel=suggest

У меня в 10-ке он на месте.
p51x вне форума Ответить с цитированием
Старый 18.06.2011, 06:13   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

VS8 это случаем не 2008?
если она да еще и экспресс, то это нормально...
качайте 2010 экспресс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать скрипты powershell из программы, написанной на с++ maximus83 C/C++ Сетевое программирование 1 19.01.2012 10:08
Нужна помощь в понимании программы, написанной на С baltushka Помощь студентам 11 06.10.2011 00:50
Проблема с компиляцией программы Cpluser Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 10.12.2010 21:16
Интерфейс для программы написанной в MS-DOS Скарам Общие вопросы C/C++ 6 15.05.2009 20:37
Откат написанной программы фЁдОр Свободное общение 13 20.12.2007 11:35