LINUX.ORG.RU

ну, можно предположить что wildargv была сперва некой функцией делавшей что-то с wildcards. Потом она была заменена на NOP.

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

"
а так - будет просто выражение из целочисленного литерала, чтобы не было ворнинга
о бессмысленном выражении - каст к void
"


всё равно туплю ...

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

всё равно туплю ... нах  "int __cdecl main(int argc, char *argv[]) "?

_cdecl: ; прямой порядок расположения данных на стеке
        ; обратный по времени способ запихивания
        ; допускает переменное число параметров
        ; поскольку стек очищает тот, кто вызвал функцию
  push argv
  push argc
  call main
  ; ret
  inc esp, 4  ; очистка стека здесь

Valeriy_Onuchin ★★
() автор топика

Может для того, чтобы компилятор не ругался на неиспользуемые аргументы?

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

>ну, можно предположить что wildargv была сперва некой функцией >делавшей что-то с wildcards. Потом она была заменена на NOP.

dilmah - ПАСИБ, так оно и было

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

всё ж такие #defines напрягают ...

почему нельзя было сделать?

#if system_1
void wildargv(int argc, char *argv[]) { ... do something ..}
#else 
void wildargv(int argc, char *argv[]) { ... do nothing.. }
#endif

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

> почему нельзя было сделать?

... ладно, зачёт, полезный "фокус" вкл/выкл  существующие функции

Valeriy_Onuchin ★★
() автор топика

А почему бы вместо:

# define wildargv(a,b) ((void)0)

не написать просто:

# define wildargv(a,b)

?

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

>> Может для того, чтобы компилятор не ругался на неиспользуемые аргументы?

В данном случае он так и будет ругаться, так как после препроцессинга они так и останутся неиспользуемыми. Чтобы не ругался, надо как-то так делать:

#define wildargv(a,b) {(void) a; (void) b;}

Deleted
()
Ответ на: комментарий от true_admin

полезная вешчь - особенно, если необходимо вставлять
что-то типа профайлинга

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

> В данном случае он так и будет ругаться, так как после препроцессинга они так и останутся неиспользуемыми. Чтобы не ругался, надо как-то так делать:

> #define wildargv(a,b) {(void) a; (void) b;}

К void приводить совсем не обязательно. Достаточно написать:

a; b;

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

>> a; b;

$ gcc -std=c99 -Wall -Wextra test.c -o test
test.c: В функции ‘main’:
test.c:5: предупреждение: оператор без побочного эффекта
test.c:5: предупреждение: оператор без побочного эффекта

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

Compilers don 't warn Bruce Schneier, Bruce Schneier warns compilers.(c)

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