Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

31.10.2011, 16:02. Просмотров 399. Ответов 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;
}
Корректен ли код? Спасибо, кто откликнется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2011, 16:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос корректен ли код void f (struct x *this);? (объявление функции) (C++):

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

Не корректен код - C++
в чём проблема кода? по идеи он должен переворачивать массив ппример: 1 2 3 4 5 6 7 8, в итоге должно получиться 5 6 7 8 1 2 3 4...но...

Дважды вычислить значение выражения, используя функции возвращающие void и не void - C++
Хай!Помогите решить Дважды вычислить значение выражения, используя функции возвращающие void и не void....

В этой части кода происходит объявление функций? Что такое void? Что в скобках? - C++
В этой части кода происходит объявление функций? Что такое void? Что в скобках? void get(float **mas, int N, int M); void...

LNK2019: ссылка на неразрешенный внешний символ "void __cdecl run(void)" (?run@@YAXXZ) в функции _wmain - C++
#include "stdafx.h" #include "iostream" #include "cmath" using namespace std; class A { private : double *x; double...

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

3
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
31.10.2011, 16:15 #2
kravam, это абсолютно корректный код на языке С (объявление функции, принимающей в качестве аргумента указатель на объект структуры x). Компилировать любым C-компилятором
0
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
31.10.2011, 16:35  [ТС] #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.
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
31.10.2011, 16:41 #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]$
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2011, 16:41
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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