News:

As usual while waiting for the next release - don't forget to check the nightly builds in the forum.

Main Menu

code complete parse problem

Started by jack, May 31, 2010, 12:27:46 PM

Previous topic - Next topic

jack

I've just upgraded to CB 10.05, but I found code complete did not work as expect. Here is the example code:


typedef struct {
char *md5;

} plugin_data;

#define INIT_FUNC(x) \
static void * x(server *srv)

INIT_FUNC(mod_foo_init) {
plugin_data *p;

p->  /* not work here */

}


Hope the patch releases soon. Thanks

oBFusCATed

Does it work if you replace:
INIT_FUNC(mod_foo_init) {
with:
static void * mod_foo_init(server *srv) {

The current CC, doesn't do preprocessor replacements, but there is patch in the special branch for the CC improvements that should work.
You can try that branch if you have time and courage :-P
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

ollydbg

I just test the code below using the latest cc_branch

typedef struct {
char *md5;

} plugin_data;



void mod_foo_init(server *srv) {

plugin_data *ppppp;

ppppp->;

};


Here is the log output(enable the smart cc AI log)

AI() AI enter, actual_search: "    ppppp->"
AI() =========================================================
AI() Doing AI for '    ppppp->':
FindCurrentFunctionStart() Looking for tokens in 'F:\cb\testCode\namespacetest\main.cpp'
FindCurrentFunctionStart() Found 0 results
FindCurrentFunctionStart() Can't determine current function...
BreakUpComponents() Breaking up '    ppppp->'
BreakUpComponents() Found component: 'ppppp' (Class)
BreakUpComponents() Adding component: 'ppppp'.
BreakUpComponents() Found component: '' (SearchText)
BreakUpComponents() Adding component: ''.
ResolveExpression() search scope is 1 result.
search scope: -1
ResolveExpression() Looping 0 result.
AI() AI leave, returned 0 results
0 results
Reparsing while typing for editor F:\cb\testCode\namespacetest\main.cpp


It seems there are some bugs. I'll check it.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

jack

#3
Quote from: oBFusCATed on May 31, 2010, 01:25:51 PM
Does it work if you replace:
INIT_FUNC(mod_foo_init) {
with:
static void * mod_foo_init(server *srv) {


It works.

oBFusCATed

ollydbg: you're testing in the CC_branch right?
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

ollydbg

Quote from: oBFusCATed on May 31, 2010, 03:19:10 PM
ollydbg: you're testing in the CC_branch right?

Yes, I'm using (testing) cc_branch these days.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

ollydbg

By the way, I just do the same these code at home(latest cc_branch), it works as expect. see the screenshot.

We only partially handles preprocessors such as "#if " like conditional preprocessor, and user defined replacement rules.


[attachment deleted by admin]
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

jack

Quote from: ollydbg on May 31, 2010, 04:08:32 PM
By the way, I just do the same these code at home(latest cc_branch), it works as expect. see the screenshot.

We only partially handles preprocessors such as "#if " like conditional preprocessor, and user defined replacement rules.


I want to try the latest cc_branch as you mentioned. Where do I get it?

Thanks :)

oBFusCATed

(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]