Ответ 1
Они ничего не делают. Являюсь признаком того, кто плохо понимает этот язык, я подозреваю.
Если это исходный код, который вы, по-видимому, "владеете", я бы удалил код и попытался нежно поговорить с человеком, который его написал.
Я просто столкнулся с некоторым кодом, который злоупотребляет точкой с запятой или использует точку с запятой для разных целей, о которой я не знаю.
Я нашел точки с запятой в конце if-утверждений и в конце функций. Например:
int main (int argc, char * argv[]) {
// some code
if (x == NULL) {
// some code
}; <-----
// more code
return 0;
}; <---
Он компилируется с помощью cc, а не gcc. Что делают эти точки с запятой? Я предполагаю, что нет никакой разницы, потому что компилятор просто рассматривает его как пустой оператор.
Они ничего не делают. Являюсь признаком того, кто плохо понимает этот язык, я подозреваю.
Если это исходный код, который вы, по-видимому, "владеете", я бы удалил код и попытался нежно поговорить с человеком, который его написал.
этот фиктивный statememt. Образец идентичен
if (x == NULL) {
// some code
do_something_here();
}
/* empty (dummy statement) here */ ;
// more code
some_other_code_here();
Вы правы, компилятор считает их пустыми. Они не нужны, я думаю, программист как-то думал, что они были.
Первая точка с запятой (после оператора if) представляет собой просто пустое выражение, которое ничего не делает. Я не вижу смысла иметь его там.
Вторая точка с запятой (после функции) является ошибкой, поскольку она находится вне любого блока кода. Компилятор должен дать предупреждение.
Эти точки с запятой не нужны (как вы сказали, это пустые утверждения). Ваш код компилируется с помощью gcc, при условии, что определяется "x" (отметьте http://www.codepad.org). Нет причин, по которым компилятор C отказывается компилировать ваш код.
Я думаю, что автор, возможно, собирался что-то вроде:
if(condition for tbd block)
;
else {
//Some code here
}
который вы могли бы сделать, если бы вы были кодом леса и все еще хотели его скомпилировать. Там хороший шанс, что это просто ошибка, которую предлагает Джон.
Эти точки с запятой бесполезны, как уже указывали другие. Единственное, что я хочу добавить, это то, что IMO, они оптимизированы, так или иначе, то есть компилятор не создает для них никакого реального кода.