[問題] c++中引入c時static 使用問題

看板C_and_CPP (C/C++)作者 (sin of bleed)時間11年前 (2015/02/02 11:12), 11年前編輯推噓2(2011)
留言13則, 5人參與, 最新討論串1/1
開發平台(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

02/02 14:19, , 1F
#include "*.h" || #include <*.h>
02/02 14:19, 1F

02/02 15:50, , 2F
#$%^@$#$^#$!@^#&....
02/02 15:50, 2F

02/02 15:52, , 3F
你應該沒寫過C/C++
02/02 15:52, 3F

02/03 00:23, , 4F
抱歉打錯了,其實我的code裡是#include "nauty.h"
02/03 00:23, 4F
※ 編輯: sea010461 (128.138.41.204), 02/03/2015 00:45:36

02/03 15:05, , 5F
我剛剛看了一下 nauty.h, 裡面已經有 extern"C" 了
02/03 15:05, 5F

02/03 15:05, , 6F
你要不要試著把你自己的 extern"C" 拿掉?
02/03 15:05, 6F

02/03 15:06, , 7F
(雖然這是 macro 定義的問題, 看起來不像跟這個有關就是..)
02/03 15:06, 7F

02/04 00:00, , 8F
謝謝,我後來沒有拿掉extern "C",但是把macro的定義直
02/04 00:00, 8F

02/04 00:02, , 9F
接在c++ main裡面static optionblk options={...}就可
02/04 00:02, 9F

02/04 00:03, , 10F
以跑了,但是我還是不是很清楚到底發生什麼事情,為什
02/04 00:03, 10F

02/04 00:05, , 11F
麼已經在.h裡面定義的macro會出這個問題,在c裡面直接
02/04 00:05, 11F

02/04 00:06, , 12F
寫可以但是c++不行,然後部知道去哪裡找答案OTL
02/04 00:06, 12F

02/06 00:50, , 13F
有個天外飛來一筆 dispatch_graph, 會是這個問題嗎?
02/06 00:50, 13F
文章代碼(AID): #1Kpki5Np (C_and_CPP)
文章代碼(AID): #1Kpki5Np (C_and_CPP)