我写这个项目但是有一些错误
package javaapplication2;
public class Fun {
public static void main(String args[]) {
int var1 = 3;
int var2 = 2;
int var3 = var1 & var2;
System.out.println(var3);
}
}
*这个程序有很多问题,虽然这段代码没有任何错误,因为我从书中复制了它。我尝试将opnet与C程序连接,这个错误出现*
#include "stdafx.h"
#include "C:\OPNET\14.5.A\sys\include\esa.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int total_pk_num = 0;
int total_size = 0;
static void notification_callback(void *state, double time, void *value);
int main(int argc, char **argv)
{
EsaT_State_Handle esa_handle;
int evt_num;
double ret_time;
EsaT_Interface *interfaces;
EsaT_Interface inf_size;
EsaT_Interface inf_desc;
int num;
int status;
int i = 0;
char desc[256];
Esa_Main(argc, argv, ESAC_OPTS_NONE);
Esa_Init(argc, argv, ESAC_OPTS_NONE, &esa_handle);
Esa_Load(esa_handle, ESAC_OPTS_NONE);
Esa_Interface_Group_Get(esa_handle, &interfaces, &num);
inf_size = interfaces[0];
inf_desc = interfaces[1];
Esa_Interface_Callback_Register(esa_handle, &status, inf_size, notification_callback, 0, 0);
while(1)
{
printf("External program\n");
Esa_Execute_Until(esa_handle, &status, 10*++i,
ESAC_UNTIL_INCLUSIVE, &ret_time, &evt_num);
if(status == ESAC_STATUS_TERMINATION)
{
printf("Simulation finished\n");
break;
}
Esa_Interface_Value_Get(esa_handle, &status, inf_desc, &desc);
printf("%s\n\n\n", desc);
sprintf(desc, "No. of packets: %d - time: %f (set in external program)",
total_pk_num, ret_time);
Esa_Interface_Value_Set(
esa_handle, &status, inf_desc, ESAC_NOTIFY_IMMEDIATELY, &desc);
}
return 0;
}
void notification_callback(void *state, double time, void *value)
{
printf("Total packet number: %d, total size: %d bits\n",
++total_pk_num, total_size += *(int *)value);
return;
}
答案 0 :(得分:0)
您的源文件是.cpp,但您正在编写C代码。将文件名更改为test_1.c
答案 1 :(得分:0)
您为其参数声明了notification_callback
以下类型:
(void *, double, void *)
在Internet上查找esnet.h for opnet(我发现版本10.0.A,但可能没有改变),Esa_Interface_Callback_Register
的参数应为:
(void *, double, va_list)
您可以以类似的方式使用您的函数,但是您应该使用va_list声明它,并且如果您知道它是您将获得的唯一参数,则取第一个参数。
而且,正如KevinDTimm回答的那样,我认为如果你不使用C ++,最好避免使用C ++,而只使用普通的C.