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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ЗасланеЦ
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 71
#1

'stricmp' undeclared (first use this function) - C++

08.06.2013, 11:46. Просмотров 1119. Ответов 18
Метки нет (Все метки)

Пытаюсь откомпилировать такой код из книги "С++ для чайников":
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// DataSet - store associated data in
//             an array of objects
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
 
// NameDataSet - stores name and credit card
//               information
class NameDataSet
{
  public:
    char firstName[128];
    char lastName [128];
    int  creditCard;
};
 
// function prototypes:
bool getData(NameDataSet& nds);
void displayData(NameDataSet& nds);
 
int main(int nNumberofArgs, char* pszArgs[])
{
    // allocate space for 25 name data sets
    const int MAX = 25;
    NameDataSet nds[MAX];
 
    // load first names, last names and social
    // security numbers
    cout << "Read name/credit card information\n"
         << "Enter 'exit' to quit"
         << endl;
    int index = 0;
    while (getData(nds[index]) && index < MAX)
    {
        index++;
    }
 
    // display the names and numbers entered
    cout << "\nEntries:" << endl;
    for (int i = 0; i < index; i++)
    {
        displayData(nds[i]);
    }
 
    // wait until user is ready before terminating program
    // to allow the user to see the program results
    system("PAUSE");
    return 0; 
}
 
// getData - populate a NameDataSet object
bool getData(NameDataSet& nds)
{
    cout << "\nEnter first name:";
    cin  >> nds.firstName;
 
    // compare the name input irrespective of case
    if (stricmp(nds.firstName, "exit") == 0)
    {
        return false;
    }
 
    cout << "Enter last name:";
    cin  >> nds.lastName;
 
    cout << "Enter credit card number:";
    cin  >> nds.creditCard;
 
    return true;
}
 
// displayData - display a data set
void displayData(NameDataSet& nds)
{
    cout << nds.firstName
         << " "
         << nds.lastName
         << "/"
         << nds.creditCard
         << endl;
}
Выходит ошибка ['stricmp' undeclared (first use this function)]
Если заменить stricmp на просто strcmp, то программа компилируется, только она уже чувствительна к регистру слова exit

Заглянул в файл string.h в папке Dev-Cpp\include - там есть строки со словом stricmp и даже _stricmp

Почему так происходит, в чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 11:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 'stricmp' undeclared (first use this function) (C++):

' a ' и ' b ' undeclared (first use this function) - C++
Помогите разобраться в чём тут дело. Заранее спасибо. Код: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include...

Undeclared (first use this function) - C++
Помогите разобраться в чём тут дело. Код: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;windows.h&gt; ...

`endl' undeclared (first use in this function) - C++
#include &lt;stdio.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() { double (*pf)(double x); ...

'cout' undeclared (first use this function) - C++
а у меня вот такая проблема. я начинающий. только-только начал. учусь по самоучителю. пишу на компиляторе Dev C++. написал код: # include...

[DEV C++]`string' undeclared (first use this function) - C++
Пробую объявить строку а он пишет 17 C:\Users\Íàäæäà\Desktop\Òåëåôîííûå_Íîìåðà.cpp `string' undeclared (first use this function) Все...

Как использовать stricmp? - C++
Нашёл в интернете информацию о stricmp, которая сравнивает символы без учёта регистров и находится в string.h Но у меня такой функции...

18
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.06.2013, 12:00 #2
У меня в Dev-Cpp Ваш код компилится без пробел.
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.06.2013, 12:07 #3
Цитата Сообщение от ЗасланеЦ Посмотреть сообщение
C++
1
stricmp
These POSIX functions are deprecated beginning in Visual C++ 2005. Use the ISO C++ conformant _stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l instead.
То есть, нужно
C++
1
_stricmp
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.06.2013, 12:16 #4
Цитата Сообщение от Мимино Посмотреть сообщение
These POSIX functions are deprecated beginning in Visual C++ 2005
Это VS , а человек пишет на Dev-Cpp
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.06.2013, 12:21 #5
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Это VS , а человек пишет на Dev-Cpp
Если первая же ссылка в гугле дает понять, что такая запись функции устарела, то почему бы не попробовать? Секунда дела.
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.06.2013, 12:31 #6
Цитата Сообщение от Мимино Посмотреть сообщение
то почему бы не попробовать?
потому что -
Цитата Сообщение от Игорь с++ Посмотреть сообщение
У меня в Dev-Cpp Ваш код компилится без пробел.
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.06.2013, 12:51 #7
Вот нет, чтобы просто помочь человеку... надо ничего не сказать, а опровергнуть попытки всех других

ЗасланеЦ,
Попробуйте так:
C++
1
stricmp
заменить на
C++
1
strcasecmp
З.Ы. в онлайн компиляторе это помогло. До замены выдавало такую же ошибку, как и у Вас.
0
ЗасланеЦ
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 71
08.06.2013, 13:24  [ТС] #8
Пробовал _stricmp, strcasecmp - результат тот-же

Dev-Cpp 4.9.9.2 если что
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.06.2013, 13:37 #9
Вот еще нашел тут на форуме
ну в руководстве к Dev где-то было сказано, что подключать надо именно <string>, а не <string.h>
<string> для использования класса string , <cstring> для использования функций вида strlen(..), strcmp(..)
Попробуйте
0
ЗасланеЦ
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 71
08.06.2013, 13:50  [ТС] #10
Нм в какую не хочет ни string ни cstring
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.06.2013, 14:13 #11
Цитата Сообщение от ЗасланеЦ Посмотреть сообщение
Заглянул в файл string.h в папке Dev-Cpp\include - там есть строки со словом stricmp и даже _stricmp
А покажите

Добавлено через 14 минут
Поставил Dev C++ 5.4.1 Проблем нет, код компилится

Добавлено через 2 минуты
Вот еще нашел.... а добавьте
C++
1
#include <strings.h>
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
08.06.2013, 14:17 #12
ЗасланеЦ, снеси свой Dev и поставь вот этот.
0
Вложения
Тип файла: rar devcpp-4.9.9.2_setup.rar (8.89 Мб, 3 просмотров)
ЗасланеЦ
1 / 1 / 0
Регистрация: 11.12.2012
Сообщений: 71
08.06.2013, 15:04  [ТС] #13
Цитата Сообщение от Мимино Посмотреть сообщение
А покажите

Добавлено через 14 минут
Поставил Dev C++ 5.4.1 Проблем нет, код компилится

Добавлено через 2 минуты
Вот еще нашел.... а добавьте
C++
1
#include <strings.h>
ну вот например

C++
1
2
3
4
5
...
_CRTIMP int __cdecl _stricmp (const char*, const char*);
...
_CRTIMP int __cdecl stricmp (const char*, const char*);
...
Добавлено через 2 минуты
strings.h не пашет

Цитата Сообщение от Игорь с++ Посмотреть сообщение
ЗасланеЦ, снеси свой Dev и поставь вот этот.
хэш суммы вашего сетупа совпадают с моим
0
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
08.06.2013, 15:35 #14
Копаем дальше
C++
1
2
// Extra non-ANSI functions provided by the CRTDLL library
_CRTIMP int __cdecl __MINGW_NOTHROW _stricmp (const char*, const char*);
C++
1
2
3
4
5
6
/*
 * Non-underscored versions of non-ANSI functions. They live in liboldnames.a
 * and provide a little extra portability. Also a few extra UNIX-isms like
 * strcasecmp.
 */
_CRTIMP int __cdecl __MINGW_NOTHROW stricmp (const char*, const char*);
Что означает комментарий перед прототипами функций? Я еще "маленький" и не совсем понимаю, а без уверенности предположения не буду выдвигать.
0
Убежденный
Системный программист
Эксперт С++
15618 / 7127 / 1128
Регистрация: 02.05.2013
Сообщений: 11,567
Записей в блоге: 1
Завершенные тесты: 1
08.06.2013, 15:48 #15
Цитата Сообщение от ЗасланеЦ Посмотреть сообщение
Пытаюсь откомпилировать такой код из книги "С++ для чайников":

...

Выходит ошибка ['stricmp' undeclared (first use this function)]
Насколько я знаю, stricmp и strcmpi - это нестандартные функции, которые
компилятор не обязан реализовывать. Поэтому используйте или платформенные
средства, или, если требуется переносимость, класс std::collate.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 15:48
Привет! Вот еще темы с ответами:

Бьёт ошибку! 11 D:\Ïðàêòèêà ïo C++\Çàäà÷à 15\main.cpp `nullptr' undeclared (first use this function) - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;vector&gt; #include &lt;time.h&gt; using namespace std; const int n = 3; const int...

Замен стандартной функции stricmp - C++
Средствами языка Си реализовать функцию работы со строками. функция должна учитывать особенности кодировки кириллицы в DOS и Windows Вот...

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend - C++
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

expected primary-expression before "bre" ; expected `;' before "bre" ; `bre' undeclared (first use this function) - C++
#include &lt;iostream&gt; using namespace std; struct point { int x; int y; }; int main() { point...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
08.06.2013, 15:48
Ответ Создать тему
Опции темы

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