Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> #include <> "" int i (); как подключать файлы и функции в с 
V
    Опции темы
ferz721
Дата 25.2.2011, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.1.2011

Репутация: нет
Всего: нет



как подключить *.с файл? #include "example.c" так коректно? или неадекватно т.е есть способы лучше есть?
как правильно использовать прототип функции?
т.е файл main.c
Код

#include <stdio.h>
#include <stdlib.h>
void qrt(int x);
main()
{
qrt(5);                               //error почему?
return;
}

файл example.c
Код

#include <stdio.h>
#include <stdlib.h>
void qrt (int x)
{
    printf("%d", x * x);

}

и в чем разница между *.h файлами и *.c если *.c точно также работают?
PM MAIL   Вверх
ferz721
Дата 26.2.2011, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.1.2011

Репутация: нет
Всего: нет



Цитата

и в чем разница между *.h файлами и *.c если *.c точно также работают?

разница
Цитата

qrt(5);                               //error почему?

 два определения
Цитата

как подключить *.с файл? #include "example.c" так коректно? или неадекватно т.е есть способы лучше есть?
как правильно использовать прототип функции?

правильно использовать прототип
PM MAIL   Вверх
bsa
Дата 26.2.2011, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ferz721, во-первых, функция main должна возвращать тип int:
Код
int main()

Во-вторых, файлы реализаций (*.c, *.cpp, *.asm...) нужно включать в проект. Это позволяет использовать перекрестные зависимости (когда два модуля используют функции друг друга), а так же сократить время компиляции при изменении одного из файлов - будет перекомпилирован только измененный файл.
PM   Вверх
ferz721
Дата 26.2.2011, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.1.2011

Репутация: нет
Всего: нет



Цитата

Во-вторых, файлы реализаций (*.c, *.cpp, *.asm...) нужно включать в проект. Это позволяет использовать перекрестные зависимости (когда два модуля используют функции друг друга), а так же сократить время компиляции при изменении одного из файлов - будет перекомпилирован только измененный файл.

можно поподробней про подключение *.asm файлов? ide code::blocks
Код

.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include masm32.inc
includelib kernel32.lib
includelib masm32.lib

BSIZE equ 20

.data
.data? 
    buf BYTE BSIZE dup(?)
    stdout DWORD ?
    stdin DWORD ?
    written DWORD ?
    read DWORD ?
    num DWORD ?

.code

start:
    invoke GetStdHandle, STD_OUTPUT_HANDLE 
    mov stdout, eax
    invoke GetStdHandle, STD_INPUT_HANDLE
    mov stdin, eax
    invoke ReadConsole, stdin, addr buf, 20, addr read, NULL 
    invoke atol, addr buf
    mov ebx, 8
    mul ebx
    mov num, eax
    invoke dwtoa, num, addr buf
    invoke WriteConsole, stdout, addr buf, read, addr written, NULL
    invoke ExitProcess, 0
end start

PM MAIL   Вверх
bsa
Дата 26.2.2011, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ferz721, попробуй убеди меня, зачем это может быть тебе нужно. Так как я очень сомневаюсь, что новичку может быть необходим ассемблер в повседневной жизни.
PM   Вверх
ferz721
Дата 26.2.2011, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.1.2011

Репутация: нет
Всего: нет



Цитата

ferz721, попробуй убеди меня, зачем это может быть тебе нужно. Так как я очень сомневаюсь, что новичку может быть необходим ассемблер в повседневной жизни.

чтобы стать продвинутым телом в си и плюсахsmile (например для оптимизации алгоритмов).
убеждать, зачем? знаешь скажи, нет тогда в разговоре нет смысла.
на самом деле я гуглил на эту тему но дальше этого еще непродвинулся

Это сообщение отредактировал(а) ferz721 - 26.2.2011, 20:56
PM MAIL   Вверх
volatile
Дата 26.2.2011, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



ferz721, вы сначала попробуйте написать, и слинковать программу на С "хелоу ворлд",
типа той которая у вас в начале темы. И чтобы она работала.

Какой нафиг асм, при таком уровне знаний?

и еще. С/С++ это - очень, очень хороший компилятор. Он сгенерит код намного лучше любого начинающего asm-программера.
и кстати, не только начинающего. Чтобы написать код работющий на асме быстрее С, мало выучить только комманды процессора, нужно очень не хило разбираться в архитектуре, и знать очень много тонкостей.


Cовет: начинайте с малого. Напишите хеллоу ворлд. smile 



PM MAIL   Вверх
ferz721
Дата 26.2.2011, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.1.2011

Репутация: нет
Всего: нет



Цитата

ferz721, вы сначала попробуйте написать, и слинковать программу на С "хелоу ворлд",
типа той которая у вас в начале темы. И чтобы она работала.

уже сделал, перед тем как написал ответ.
Цитата

Cовет: начинайте с малого. Напишите хеллоу ворлд.  

так и делаю, но изначальная цель выполнить проект где эти знания понадобятся.
PM MAIL   Вверх
bsa
Дата 27.2.2011, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ferz721, ассемблер тебе не нужен. Тем более, что полностью на ассемблере редко, что пишут. Я видел его только в исходниках ядра Linux. Если же нужна оптимизация какой-либо функции, то используется встраиваемый ассемблер. Т.е. пишут пару строк на ассемблере внутри функции на С/С++. Это позволяет избежать необходимости писать пролог и эпилог функции.
И вообще, если ты напишешь на ассемблере функцию вывода на экран окошка в Windows, то это не только не ускорит твою программу, но и сильно усложнит дальнейшую поддержку.
Есть хорошее правило - не оптимизируй раньше времени. Но и пессимизация тоже не здорово.
PM   Вверх
ferz721
Дата 27.2.2011, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 14.1.2011

Репутация: нет
Всего: нет



ok
PM MAIL   Вверх
bsa
Дата 27.2.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
Если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.