Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Pelles C


Автор: Smaug 1.8.2006, 02:10
Поставил себе Пеллес (рекоммендовали его сильно,в том числе и на этом форуме) но не могу взять в толк как использовать smile
вот к примеру
создаю сорс файл hi

Код

#include <stdio.h>

int main(void)

{

    printf("Privet,Dasha!");
         return 0;
}




а он не компилируется 
говорит

Цитата
 C:\Program Files\PellesC\Projects\hi.c(5): warning #2203: Function 'main' can't be __stdcall, changed to __cdecl.



я пока решаю весьма и весьма примитивные задачи на Си, так что никаких прожектов мне создавать не нужно, а не работает и всё тут smile



Автор: S.A.G. 1.8.2006, 04:12
Создаешь проект, заходишь в Project - Project Options..., вкладка Compiler и ставишь флажок напротив "Enable Microsoft Extensions". Что оно означает? - Незнаю но при этом оно работает.

Автор: 586 1.8.2006, 04:14
int __cdecl main(void)

Автор: Smaug 1.8.2006, 12:20
Цитата
Создаешь проект, заходишь в Project - Project Options..., вкладка Compiler и ставишь флажок напротив "Enable Microsoft Extensions". Что оно означает? - Незнаю но при этом оно работает.



у меня стоит сей значок и ничего не работает smile
к тому же всетаки хотелось бы знать что сие означает smile

Цитата

int __cdecl main(void)



а почему?
другого ,более нормального пути нет?

Автор: 586 1.8.2006, 19:34
Цитата(Smaug @  1.8.2006,  13:20 Найти цитируемый пост)
Цитата
int __cdecl main(void)

На сколько я знаю, функция main вызывается по соглашению __cdecl, а не __stdcall.

Цитата(Smaug @  1.8.2006,  13:20 Найти цитируемый пост)
другого ,более нормального пути нет? 

Так трудно одно слово написать?

Автор: rsm 1.8.2006, 19:46
Smaug, предлагаю на выбор три варианта создания нового проекта:

Вариант №1
  • закрываешь окно с редактором кода;
  • в главном меню: "File" -> "New project";
  • выделяешь "Console application wizard", вводишь название проекта;
  • выбираешь "A simple program", жмешь "Next";
  • жмешь "Finish";
Вариант №2
  • закрываешь окно с редактором кода;
  • в главном меню: "File"- > "New project";
  • выделяешь "Win32 Console Program", вводишь название проекта;
  • в главном меню: "Project" -> "Add files to project";
Вариант №3
  • окно с редактором кода открытым;
  • в главном меню: "File" -> "Save all";
  • в главном меню: "Project" -> "Build XXX";
  • выделяешь "Win32 Console Program";
Выбирай любой какой больше нравится, все они приводят к одному результату - созданию нового проекта консольной программы, которая компилируется без каких-либо возмущений со стороны компилятора или линкера.

Цитата(Smaug @  1.8.2006,  14:20 Найти цитируемый пост)
всетаки хотелось бы знать что сие означает

Это означает разрешение на использование расширений стандартного С, сделанных в Microsoft. Полный список изменений в настройках проекта, которые происходят при добавлении этого ключа, можно посмотреть в справке (раздел "Command line tools", подраздел "POCC compiler", ссылка "Command line options", ссылка "/Ze").
Если в двух словах: использование этого ключа дает возможность вызывать из консольной программы функции WinAPI, а так же определяет некоторые типы данных (__int64 например). Подключив хидер "windows.h" без этого ключа, получишь при компиляции кучу ошибок и ничего более.

Цитата(Smaug @  1.8.2006,  14:20 Найти цитируемый пост)
а почему? другого ,более нормального пути нет?

В написанных с использованием CRT (C Runtime Library, "С'шная библиотека времени исполнения") программах все функции CRT, в том числе и функция main, должны быть объявлены как __cdecl. Свои функции можно объявлять как угодно.

P.S. Варианты создания проекта указаны для Pelles C for Windows версии 4.00.50.

Автор: Pilligrim 1.8.2006, 19:50
__cdecl - это стандартный вызов функций в С и C++ программах(типа обычный), а __stdcall - используется для вызова Win32 API функций. А подробней надо спрашивать у вашего компилятора. Например некотрые компиляторы эти ключевые слова расставляют сами(писать не надо). Они просто определяют тип вашего приложения и всё. 

Цитата
другого ,более нормального пути нет?


Похоже для тебя,Smaug, нет. Меняй среду разработки. VC++ - forever! smile 

Автор: Smaug 1.8.2006, 20:03
Товарищи,спасибо огромное! smile
А я все время жал на Win32 program cо всеми вытекающими отсюда последствиями.

пс

к сожалению пока не могу влиять на репутацию (надо еще 91 раз влезть на форум с глупыми вопросами) smile

Автор: rsm 1.8.2006, 20:19
Цитата(Pilligrim @  1.8.2006,  21:50 Найти цитируемый пост)
некотрые компиляторы эти ключевые слова расставляют сами (писать не надо)

Компилятор животное подневольное, самостоятельно ничего не делает. Он лишь использует для функций, которые не объявлены явно, заданное по-умолчанию для конкретного типа проекта объявление вызова. Поменять умолчательное значение можно в настройках ("Project" -> "Project options..."; "Compiler"; "Calling conv").

Цитата(Pilligrim @  1.8.2006,  21:50 Найти цитируемый пост)
Меняй среду разработки. VC++ - forever!

А оно надо, для обучения-то? Да и для работы Pelles C for Windows вполне подходит (тем паче, что лицензия позволяет писать коммерческий софт). Если нужен С++ - тогда конечно ой, тогда лучше VC++ (Express) и никаких вопросов.

Цитата(Smaug @  1.8.2006,  22:03 Найти цитируемый пост)
не могу влиять на репутацию

Если считаешь нужным, черкни в приват модератору раздела - он поставит "+" от твоего имени.

Автор: Pilligrim 1.8.2006, 20:33
Цитата
Компилятор животное подневольное, самостоятельно ничего не делает. Он лишь использует для функций, которые не объявлены явно, заданное по-умолчанию для конкретного типа проекта объявление вызова. Поменять умолчательное значение можно в настройках ("Project" -> "Project options..."; "Compiler"; "Calling conv").


Я про это,rsm, и говорил:
Цитата
Например некотрые компиляторы эти ключевые слова расставляют сами(писать не надо). Они просто определяют тип вашего приложения и всё. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)