Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
#1

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

31.10.2011, 16:02. Просмотров 416. Ответов 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
Ответы с готовыми решениями:

Объявление struct в элемент массива.
Доброго дня! Нужно реализовать следующую задачу... Есть массив : int map;...

Не корректен код
в чём проблема кода? по идеи он должен переворачивать массив ппример: 1 2 3...

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

В этой части кода происходит объявление функций? Что такое void? Что в скобках?
В этой части кода происходит объявление функций? Что такое void? Что в скобках?...

LNK2019: ссылка на неразрешенный внешний символ "void __cdecl run(void)" (?run@@YAXXZ) в функции _wmain
#include "stdafx.h" #include "iostream" #include "cmath" using namespace...

3
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
31.10.2011, 16:15 #2
kravam, это абсолютно корректный код на языке С (объявление функции, принимающей в качестве аргумента указатель на объект структуры x). Компилировать любым C-компилятором
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
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
Эксперт С++
5785 / 3434 / 351
Регистрация: 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

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

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

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


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

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

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