[问题] c++中引入c时static 使用问题

楼主: sea010461 (sin of bleed)   2015-02-02 11:12:03
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
g++,gcc
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
nauty.a
问题(Question):
我想在C++中使用nauty这个图论相关的程式。但是这个程式是用c写成的。
我想先从最基本的部份开始。但是一开始就遇到问题OTL。
我的测试程式大概样子是这样
extern "C"{
#include "nauty.h"
}
int main()
{
...
static DEFAULTOPTIONS_GRAPH(options);
...
}
在 nauty.h中关于DEFAUTOPTIONS_GRAPH(options)的资讯是
#define DEFAULTOPTIONS_GRAPH(options) optionblk options = \
{0,FALSE,FALSE,FALSE,TRUE,FALSE,CONSOLWIDTH, \
NULL,NULL,NULL,NULL,NULL,NULL,100,0,1,0,&dispatch_graph,
\FALSE,NULL}
我感觉上因为nauty有很多参数设定细节,所以他做了一个这样的东西。
但是当我开始compile的时候
g++ -o testcpp -Wall testcpp.cpp nauty.a
出现
error: ISO C++ forbids declaration of ‘DEFAUTOPTIONS_GRAPH’
with no type [-fpermissive] static DEFAUTOPTIONS_GRAPH(options);
请问这是遇到什么样的问题,该如何解决呢?我不是非常懂C++或是C
的运作,我想可能是一些基础观念不懂,如果有关键字可以让我咕狗
也是非常感谢。因为我咕狗出来的结果通常是没有include某个.h档
但是好像不太是我的情况。
感谢。
作者: OPIV (Monitor)   2015-02-02 14:19:00
#include "*.h" || #include <*.h>
作者: TobyH4cker (Toby (我要当好人))   2015-02-02 15:50:00
#$%^@$#$^#$!@^#&....你应该没写过C/C++
楼主: sea010461 (sin of bleed)   2015-02-03 00:23:00
抱歉打错了,其实我的code里是#include "nauty.h"
作者: LPH66 (-6.2598534e+18f)   2015-02-03 15:05:00
我刚刚看了一下 nauty.h, 里面已经有 extern"C" 了你要不要试着把你自己的 extern"C" 拿掉?(虽然这是 macro 定义的问题, 看起来不像跟这个有关就是..)
楼主: sea010461 (sin of bleed)   2015-02-04 00:00:00
谢谢,我后来没有拿掉extern "C",但是把macro的定义直接在c++ main里面static optionblk options={...}就可以跑了,但是我还是不是很清楚到底发生什么事情,为什么已经在.h里面定义的macro会出这个问题,在c里面直接写可以但是c++不行,然后部知道去哪里找答案OTL
作者: lf5471 (lf)   2015-02-06 00:50:00
有个天外飞来一笔 dispatch_graph, 会是这个问题吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com