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

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

Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
#1

корректен ли код void f (struct x *this);? (объявление функции) - C++

31.10.2011, 16:02. Просмотров 374. Ответов 3
Метки нет (Все метки)

...На солидном ресурсе встретил большой код, но я его конечно упростил до минимума.

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct x {
 int y;
};
 
//Вот на эту строчку ругается компилятор, говорит, что 
//ожидается троеточие или запятая перед this
void f (struct x *this);
 
 
int main () {
   return 0;
}
Корректен ли код? Спасибо, кто откликнется.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2011, 16:02     корректен ли код void f (struct x *this);? (объявление функции)
Посмотрите здесь:

Объявление struct в элемент массива. - C++
Доброго дня! Нужно реализовать следующую задачу... Есть массив : int map; Теперь мы перебираем каждый элемент массива, и...

Функции в struct - C++
Я даже не думал, что в struct можно объявлять функции. Представлялось так: struct - набор данных, class - уже объектное что-то, грубо...

Переписать код с void - - C++
Здравствуйте! Нужно переписать код так,чтобы вместо int ModulTest1() было void ModulTest1(), если просто заменить, то появляются ошибки....

Прототип функции в struct - C++
Добрый день форумчане. Возможно ли в структуре объявить только прототип функции, а само тело написать вне структуры?

Функции.Зачем нужны void функции? - C++
Здравствуйте люди.Я учусь по книге C++ для чайников.Там объясняют многое про функции.Одного не могу понять.Зачем нужны void функции с...

Функции типа void - C++
Добрый вечер, у меня есть проблема, которую я не могу решить. Есть функция типа void. Суть этой функции в том, чтобы печетать некие...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
31.10.2011, 16:15     корректен ли код void f (struct x *this);? (объявление функции) #2
kravam, это абсолютно корректный код на языке С (объявление функции, принимающей в качестве аргумента указатель на объект структуры x). Компилировать любым C-компилятором
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
31.10.2011, 16:35  [ТС]     корректен ли код void f (struct x *this);? (объявление функции) #3
A this-то зачем?
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
E:\Dev-Cpp_nomingw\bin>g++ ra.cpp
ra.cpp:7:19: error: expected ',' or '...' before 'this'
 
E:\Dev-Cpp_nomingw\bin>gcc ra.cpp
ra.cpp:7:19: error: expected ',' or '...' before 'this'
 
E:\Dev-Cpp_nomingw\bin>g++ --version
g++ (GCC) 4.5.0 20100311 (experimental)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 
E:\Dev-Cpp_nomingw\bin>gcc --version
gcc (GCC) 4.5.0 20100311 (experimental)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2011, 16:41     корректен ли код void f (struct x *this);? (объявление функции)
Еще ссылки по теме:

Передачи функции имени вектора со структурой (vector+struct >> some function) - C++
Доброе время суток!! Помогите разобраться с передачей функции в качестве аргумента весь вектор со структурой Собственно пишу из...

Выведение vector-а из функции void*(c++) - C++
Здравствуйте, помогите пожалуйста. Я создаю структуру : struct MemoryBlock { size_t offset; size_t size;...

объявление функции - C++
допустим у меня есть программа она использует из библиотеке conio.h функцию getch() вот мне интересно как в программе подключить эту...

Объявление функции - C++
Что значит подобное объявление: int f() const; Для чего этот "const" ?

Объявление функции - C++
Всем доброго времени суток! Подскажите пожалуйста, как правильно объявить функцию, которая возвращает указатель на двумерный массив. И...

Объявление функции - C++
Завдання 1 Створити функцію яка приймає на вхід посилання на карту з ключем цілого типу,та значенням з плаваючою точкою. Другим...


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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
31.10.2011, 16:41     корректен ли код void f (struct x *this);? (объявление функции) #4
kravam, this - это всего лишь имя формального параметра функции. Вместо него можно было бы написать:
C
1
void f (struct x* xptr);
И да, я же сказал, компилируй С-компилятором (сохрани с расширением *.c, скорми исходник gcc) - видать, твоя сборка делает определение языка по расширению, а в С++ this - это зарезервированное ключевое слово, вот и возникает синтаксическая ошибка:
Код
[nameless@desktop c]$ cat main.c
#include <stdio.h>
#include <stdlib.h>

struct foo
{
    struct foo* next;
};

void bar(struct foo* this);

int main(void)
{
    exit(0);
}
[nameless@desktop c]$ make
gcc -Wall -g -ansi -pedantic -pedantic-errors   -c -o main.o main.c
gcc -o sample -lm main.o
[nameless@desktop c]$ ./sample 
[nameless@desktop c]$ gcc --version
gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
Copyright (C) 2011 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая 
коммерческую ценность и применимость для каких-либо целей.

[nameless@desktop c]$
Yandex
Объявления
31.10.2011, 16:41     корректен ли код void f (struct x *this);? (объявление функции)
Ответ Создать тему
Опции темы

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