NetBeans

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

NetBeans

Сообщение TuxWare »

В одном проекте имеем файлы debug.h, debug.cpp и main.cpp

В debug.h
.....
void debug(const char *, const char *, int);
#ifndef NDEBUG
#define debug(msg) debug(msg, __FILE__, __LINE__);
#else
#define debug(msg)
#endif
.....

B debug.cpp
.....
#include "debug.h"
#undef debug
void debugOut(const char *s) {...}
void debug(const char *msg, const char *file, int line) {...}
.....

B main.cpp
.....
#include "debug.h"
main()
{
debu <CTRL>+<SPACE> // т.е написал кусочек слова и нажал дополняй
}

Предлагает три варианта
debug()
debug(const char *, const char *, int)
debugOut(const char *)

Третий вариант совсем непонятно, как проникает из debug.cpp в main.cpp. Второй тоже не может существовать ни при каких обстоятельствах. Он просто затерт для main.cpp определением #define debug(msg).

Может я пропустил какие то опции при настройке NetBeans или проекта?
Спасибо сказали:
Аватара пользователя
Tetsuzin
Сообщения: 136
ОС: Vista, Ubuntu

Re: NetBeans

Сообщение Tetsuzin »

Наверное глюк.
Я тоже проверил, дополнять дополняет, но компилятор не обманешь: (:

"main.cpp:17: error: `debugOut' was not declared in this scope"

Кстати, попробовал то же самое сделать в MSVC
автодополнение тоже предлагает в качестве одного из вариантов debugOut, но компилятор не компилирует:
"error C3861: 'debugOut': identifier not found"
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: NetBeans

Сообщение kamre »

TuxWare писал(а):
20.10.2009 16:10
Третий вариант совсем непонятно, как проникает из debug.cpp в main.cpp. Второй тоже не может существовать ни при каких обстоятельствах. Он просто затерт для main.cpp определением #define debug(msg).

В CDT тоже самое. Правда если сделать debugOut static, то ее не показывает уже. А такие тонкости как перекрытие имен препроцессором похоже никто не умеет в автокомплите учитывать )
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: NetBeans

Сообщение TuxWare »

kamre писал(а):
22.10.2009 21:40
В CDT тоже самое.


Не знаю о каком Вы CDT, но в 5-ом и 6-ом в paзделе CDT->индексация есть опция "Индексировать только включенные заголовки". И тогда работает правильно. Но от CDT нельзя добиться "case sensitive" дополнения. Если я написал nul<ctrl>+<spase> он подсунет и NULL и еще кучу всякого хлама. Я сегодня закинул баг в netbeans, посмотрим чего ответят.
Спасибо сказали:
Ответить