看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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