Я пытаюсь без везения включить string
s в мой начинающий проект для начинающих API C++ Win32. Код не будет компилироваться, если я определяю string
. Что происходит?C++ Win32 API включает <string>
Детали:
Я работал в Dev C++, но теперь переключился на Code :: Blocks с помощью "Gnu GCC компилятора" (по умолчанию?).
Вот случаи, кода я пытался, все похожи, с их результатами:
компилирует успешно:
#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
Я задал этот вопрос несколько дней назад, но удалил его, потому что казалось, как немой вопрос. Однако он не был решен и теперь вернулся, чтобы преследовать меня. Заранее спасибо.
Не с gcc. GCC будет компилировать любой файл, который вы бросаете на него на том языке, о котором вы ему рассказываете. Компиляция файла .cpp с помощью «gcc», например, успешно скомпилирует программу, но не сможет связать ее со стандартной библиотекой C++. Коммутаторы и/или arg0 - это указать язык, используя, например, «g ++» вместо «gcc». –
Да, это проблема. Изменено расширение и удалено '.h', и он работает нормально. Большое спасибо вам и @Noah. – Ben
Угадайте, что gcc обращает внимание на расширение. Просто посмотрел на страницу руководства. Конечно, можно переопределить. –