作者sea010461 (sin of bleed)
看板C_and_CPP
標題[問題] c++中引入c時static 使用問題
時間Mon Feb 2 11:12:03 2015
開發平台(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檔
但是好像不太是我的情況。
感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 128.138.41.204
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1422846725.A.5F3.html
推 OPIV: #include "*.h" || #include <*.h> 02/02 14:19
→ TobyH4cker: #$%^@$#$^#$!@^#&.... 02/02 15:50
→ TobyH4cker: 你應該沒寫過C/C++ 02/02 15:52
→ sea010461: 抱歉打錯了,其實我的code裡是#include "nauty.h" 02/03 00:23
※ 編輯: sea010461 (128.138.41.204), 02/03/2015 00:45:36
推 LPH66: 我剛剛看了一下 nauty.h, 裡面已經有 extern"C" 了 02/03 15:05
→ LPH66: 你要不要試著把你自己的 extern"C" 拿掉? 02/03 15:05
→ LPH66: (雖然這是 macro 定義的問題, 看起來不像跟這個有關就是..) 02/03 15:06
→ sea010461: 謝謝,我後來沒有拿掉extern "C",但是把macro的定義直 02/04 00:00
→ sea010461: 接在c++ main裡面static optionblk options={...}就可 02/04 00:02
→ sea010461: 以跑了,但是我還是不是很清楚到底發生什麼事情,為什 02/04 00:03
→ sea010461: 麼已經在.h裡面定義的macro會出這個問題,在c裡面直接 02/04 00:05
→ sea010461: 寫可以但是c++不行,然後部知道去哪裡找答案OTL 02/04 00:06
→ lf5471: 有個天外飛來一筆 dispatch_graph, 會是這個問題嗎? 02/06 00:50