LINUX.ORG.RU

Не компилируются функции, C++

 ,


0

1

Привет всем. Суть проблемы указана в названии треда. Остаётся добавить лишь то, что в C++ я конченый нуб, а потому объяснения должны происходить на пальцах. Надеюсь поможете.

Код:

long reformat (long x, char y)
{
	if (y == "b" or y == "B")
	{
		return x;
	}
	else if (y == "kb" or y == "KB")
	{
		x = x * 1024;
		return x;
	}
	else if (y == "mb" or y == "MB")
	{
		x = x * 1024 * 1024;
		return x;
	}
	else if (y == "gb" or y == "GB")
	{
		x = x * 1024 * 1024 * 1024;
		return x;
	}
	else if (y == "tb" or y == "TB")
	{
		x = x * 1024 * 1024 * 1024 * 1024;
		return x;
	}
}

int main(){}
Компиляцию запускаю по средству команды «g++ -o hello.lor -Wall /.../hello.cpp», однако на выходе получаю не бинарик, а следующие строки...
hello.cpp: In function ‘long int reformat(long int, char)’:
hello.cpp:13: warning: comparison with string literal results in unspecified behaviour
hello.cpp:13: error: ISO C++ forbids comparison between pointer and integer
hello.cpp:13: warning: comparison with string literal results in unspecified behaviour
hello.cpp:13: error: ISO C++ forbids comparison between pointer and integer
P.S.
Если не сложно, посоветуйте учебник по сабжу, желательно с уклоном под linux и опущением всяких абстракций вроде «что такое переменные» и «чем отличается функция от процедуры». Нет, конечно я нуб нубом, однако с такими элементарными вещами знакомство имею.


глядя на твой код у меня слезятся глаза.

посоветуйте учебник по сабжу

с++ for dummies.

nanoolinux ★★★★
()
Ответ на: комментарий от nokachi

чем функция отличается от процедуры

тем же чем отличается expression от statement, у первого есть значение

shty ★★★★★
()
Ответ на: комментарий от shty

ну, экспрешн-то можно и как стэйтмент использовать. Так же и с function call — you can use the result or you can drop it — does it mean your function becomes a procedure?

nokachi
()
Ответ на: комментарий от shty

ну, все равно не вижу я ничего фундаментального в знании этой терминологии — может функция в основном для сайд-эффектов вызывается, и возвращает только еррор код, тогда она ж скорее процедура.

nokachi
()
Ответ на: комментарий от Begemoth

Это как раз стандарт, называется это alternate tokens и включает and, or, not, bitand, bitor, compl, xor, and_eq, or_eq, not_eq, bitand_eq, bitor_eq, compl_eq, xor_eq.

Ого, я не знал, хотя работаю C++-разработчиком. Но если честно, ВООБЩЕ нигде ни в каком коде этого не встречал.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от sv75
В Си можно вернуть тип void. 

спорно

void b() { return void; //??? } 

синтаксис

void b()                                                                                                             
{                                                                                                                    
    return a();                                                                                                      
}
просто синтаксический сахар для

void b()                                                                                                             
{
    a();                                                                                                         
    return;                                                                                                      
}
vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

void b() { return void; //??? }

Это как?? return int тоже не покатит. А переменных типа void нет, ну что уж тут поделать.

sv75 ★★★★★
()
Ответ на: комментарий от sv75

да, тут ступил. но так или иначе

В Си можно вернуть тип void.

нельзя)

vvviperrr ★★★★★
()
Ответ на: комментарий от DELIRIUM

Но если честно, ВООБЩЕ нигде ни в каком коде этого не встречал.

Да, к сожалению, мало распространено, Visual C++ их не поддерживает, и приходится определять их как макросы.

Begemoth ★★★★★
()
Ответ на: комментарий от nokachi

ну, все равно не вижу я ничего фундаментального в знании этой терминологии — может функция в основном для сайд-эффектов вызывается, и возвращает только еррор код, тогда она ж скорее процедура.

проблема в том что ты рассматриваешь бабушку как дедушку без письки, с определённой погрешностью эта модель верна, но погрешность слишком велика

shty ★★★★★
()
Ответ на: комментарий от drBatty

нафига оно нужно-то?

Тем что лучше читается чем унаследованные от С операторы.

только путаница ИМХО

никакой путаницы.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Тем что лучше читается чем унаследованные от С операторы.

дело привычки. Если вы привыкли к php - возможно... На самом деле, || это вам НЕ логическое ИЛИ. Это несколько другой оператор. А вот что такое or - мне неведомо.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.