C ++预处理器 - 以前工作,现在不工作

时间:2014-07-11 10:31:59

标签: c++ netbeans cygwin c-preprocessor

我放下了一些代码4或5年&今天又把它拿起来了。

我没有改变代码,但是在这几年里我升级了Netbeans并卸载了Cygwin 32位,今天安装了Cygwin 64位。

主要的预处理器宏是在Netbeans项目中定义的,而不是在代码中定义的。有些似乎没问题,但有些人给我这样的错误:

g++    -c -g -DBUILD_VERSION_MAJOR\ \ \(0\) -DBUILD_VERSION_MINOR\ \(1\) -DDEFAULT_FREED_MEMORY_VALUE\ \(0xA5\) -DDEFAULT_UNITIALIZED_MEMORY_VALUE\ \(0XCC\) -DDO_TRACING -DTESTING -DTRACE_FILENAME_LENGTH\ 17 -DTRACE_FILE_NAME -MMD -MP -MF "build/Debug/Cygwin_4.x-Windows/_ext/1472/cppUnitMain.o.d" -o build/Debug/Cygwin_4.x-Windows/_ext/1472/cppUnitMain.o ../cppUnitMain.cpp
<command-line>:0:26: error: expected ']' before numeric constant
../testing/buffer_pool/../../system/h/buffer_pool_private.h:92:16: note: in expansion of macro 'TRACE_FILENAME_LENGTH'
  char fileName[TRACE_FILENAME_LENGTH];    

但是当我评估TRACE_FILENAME_LENGTH]时,它会说17

包含错误的文件确实包含声明宏的文件(否则,我想,NetBeans不会对其进行评估)。

如果我在提出问题的行之前尝试#define TRACE_FILENAME_LENGTH 17我仍然会收到相同的错误,但也会出现警告

In file included from ../testing/buffer_pool/test_buffer_pool.h:37:0,
                 from ../cppUnitMain.cpp:46:
../testing/buffer_pool/../../system/h/buffer_pool_private.h:79:0: warning: "TRACE_FILENAME_LENGTH" redefined [enabled by default]
 #define TRACE_FILENAME_LENGTH 17
 ^

之前工作过。现在不行。没有代码更改。相同的NetBeans项目,但可能已由NetBeans升级。 Cygwin 64而不是Cygwin 32。

有什么想法吗?


[更新]我使用-E选项运行GCC以仅运行pr处理器,该行说char fileName[17];。最奇怪的!

对于命令行,我无法控制,因为它是由NetBeans生成的。

我还尝试在项目选项中更改为TRACE_FILENAME_LENGTH=17而不是TRACE_FILENAME_LENGTH 17,但这不起作用,而且以前使用空格而不是=工作(几年前)

0 个答案:

没有答案