簡體   English   中英

使用igraph C庫生成具有冪律度分布的網絡時,“標量初始化器中的多余元素”

[英]“excess elements in scalar initializer” when using igraph C library to generate a network with power law degree distribution

我正在使用igraph C庫,並且想生成一個無向,無循環和具有冪律度分布的單邊緣網絡。 我有的參數是:

  • 節點數= 25,000
  • 邊數= 25,000
  • alpha = 2.16104

我想使用igraph_static_power_law_game圖生成器,並編寫了以下代碼。

#include <igraph.h>

int main() {

  igraph_t g;
  int igraph_static_power_law_game(&g, 25000, 25000, 2.16104, -1, 0, 0, 1);
  igraph_destroy(&g);

  return 0;
}

我使用以下命令來編譯代碼。

gcc testpw.cpp -I/usr/local/Cellar/igraph/0.7.1/include/igraph -L/usr/local/Cellar/igraph/0.7.1/lib -ligraph -o testpw

並且出現以下錯誤。

error: excess elements in scalar initializer
  int igraph_static_power_law_game(&g, 25000, 25000, 2.16104, -1, 0, 0, 1);
      ^                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

由於我找不到使用igraph C庫在線生成冪律度網絡的示例,因此我不知道該怎么做。 我在這里做錯什么了嗎?

如果要編譯C代碼,則在igraph_static_power_law_game()之前不需要int ,因為這會使該行看起來像是函數的錯誤聲明,而不是函數的調用。

或者,如果您正在編譯C ++代碼,則編譯器會將括號的內容解釋為變量igraph_static_power_law_game的初始化程序,並抱怨單個int變量不需要多個初始化程序。

無論哪種方式,寫:

igraph_static_power_law_game(&g, 25000, 25000, 2.16104, -1, 0, 0, 1);

修復了立即編譯錯誤。 您可能應該使用類似:

if (igraph_static_power_law_game(&g, 25000, 25000, 2.16104, -1, 0, 0, 1) != 0)
    …report error…

這樣,如果函數失敗,您就知道了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM