C ++ Win32 API включает <string> - PullRequest
       0

C ++ Win32 API включает <string>

1 голос
/ 25 ноября 2010

Я безуспешно пытаюсь включить string s в мой проект C ++ Win32 API для начинающих.Код не скомпилируется, если я определю string.Что происходит?


Подробности:

Я работал в Dev C ++, но теперь переключился на Code :: Blocks, используя (по умолчанию?) «Gnu GCC Compiler».

Вот примеры кода, которые я пробовал, все похожие, с их результатами:

Успешно компилируется:

#include <windows.h>
#include <string.h>  //<string> throws "no such file or directory"

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
//...the rest works perfectly, omitted in following examples

Сбои:

#include <windows.h>
#include <string.h>

// Error: "string" does not name a type
string myString;  

// ...WndProc

Успешно компилируется:

#include <windows.h>
#include <string.h>
using namespace std;

// ...WndProc

Сбой:

#include <windows.h>
#include <string.h>
using namespace std;

// Error: "string" does not name a type
string myString; 

// ...WndProc

Сбой:

#include <windows.h>
#include <string.h>

// Error: expected constructor, destructor, or type conversion before "myString"
// Error: expected ',' or ';' before "myString"
std::string myString; 

// ...WndProc

Я задал этот вопрос несколько дней назад, но удалил его, потому что он выглядел какдурацкий вопрос.Тем не менее, это не было решено, и теперь вернулся, чтобы преследовать меня.Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 25 ноября 2010

Имеет ли исходный файл расширение .cpp? Если это .c, он скомпилируется как код C, что, вероятно, исключает каталоги, содержащие стандартные заголовки C ++.

2 голосов
/ 25 ноября 2010

#include <string.h> //<string> throws "no such file or directory"

Что-то серьезно сломано либо при установке компилятора, либо при его использовании.Что бы ни случилось после этого, невозможность включить заголовок для std::string сильно затруднит его использование.

Вы можете установить пакет GCC без поддержки C ++, возможно, это ваша проблема.*

0 голосов
/ 25 ноября 2010

string.h имеет только методы для обработки строки.Например, strcpy, strlen и т. Д. (* http://opengroup.org/onlinepubs/007908799/xsh/string.h.html)

Если вы хотите использовать std :: string, вам следует использовать. Если файла нет, проверьте этот файл.

Удачи:)

0 голосов
/ 25 ноября 2010

<string.h> содержит строковые макросы ANSI C и объявления функций (см. здесь ), а не C ++ string.Чтобы использовать std::string, вам нужно сделать

#include <string>

(нет .h)

#include <windows.h>
#include <string>

std::string myString; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...