gpt4 book ai didi

c - C语言错误C2059和C2061

转载 作者:可可西里 更新时间:2023-11-01 11:21:14 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why does VS2010 give syntax errors when syntax is correct?

我正在尝试使用 Visual Studio 2010 用 C 语言开发一种 Windows 32 服务。

我创建了一个新项目,并插入了 .c 文件:

  • 主程序
  • 服务.c
  • 杂项

我还有两个头文件:

  • 我的错误.h
  • 我的.h

这是我的代码(请注意,这只是一个草稿)。

主.c:

#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "stdafx.h"
#include "my.h"
#include "myerrors.h"

static int parse_args(int ac, char **av)
{
int i = 0;

while (++i < ac)
if (strcmp(av[i], "-i") && !InstallMyService())
return false;
else if (strcmp(av[i], "-d") && !UninstallMyService())
return false;
else if (strcmp(av[i], "-p"))
if (!av[i + 1])
return false;
else
{
if (!InsertPathInRegistry(av[i + 1]))
return false;
i++;
}
else
return false;
return true;
}

int main(int ac, char **av)
{
HANDLE hLogFile;

if ((hLogFile = CreateFile(LOG_FILE_PATH, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE)
aff_error(CANT_CREATE_FILE);
if (ac > 1)
{
if (!parse_args(ac, av))
{
aff_error(BAD_ARGUMENTS);
return EXIT_FAILURE;
}
}
else
{
SERVICE_TABLE_ENTRY DispatchTable[] = {{DC_SERVICE_NAME, ServiceMain}, {NULL, NULL}};
StartServiceCtrlDispatcher(DispatchTable);
}
getchar();
if (!CloseHandle(hLogFile))
aff_error(CLOSE_FILE_FAILED);
return EXIT_SUCCESS;
}

杂项.c:

#include <Windows.h>
#include <stdio.h>
#include "my.h"
#include "myerrors.h"

void aff_error(char *error_str)
{
fprintf(stderr, "ERROR: %s\n", error_str);
}

bool InsertPathInRegistry(char *path)
{
printf("LOG: Inserting %s as ", path);
}

void WriteInLogFile(HANDLE hLogFile, char *log_string)
{
printf("WriteInLogFile function");
}

服务.c:

#include <Windows.h>
#include "my.h"

bool InstallMyService()
{
return true;
}

bool UninstallMyService()
{
return true;
}

void WINAPI ServiceCtrlHandler(DWORD Opcode)
{

}

void WINAPI ServiceMain(DWORD ac, LPTSTR *av)
{

}

我的标题只是一些函数声明和宏,例如:

# define DC_SERVICE_NAME    "MyService"

/* MISC functions */

void aff_error(char *error_str);

我的.h

#ifndef _MY_H_
# define _MY_H_

#include <Windows.h>
#include <strsafe.h>

/* Macros */

# define LOG_FILE_PATH "c:\\my_log_file.txt"
# define DC_SERVICE_NAME "MyService"

/* MISC functions */

void aff_error(char *error_str);

/* SERVICE functions */

void WINAPI ServiceMain(DWORD ac, LPTSTR *av);
bool InstallMyService();
bool UninstallMyService();
bool InsertPathInRegistry(char *path);
void WINAPI ServiceCtrlHandler(DWORD Opcode);

#endif /*!MY_H_ */

在尝试编译项目时,我遇到了一些奇怪的错误:

my.h(19): error C2061: syntax error : identifier 'InstallMyService'
my.h(19): error C2059: syntax error : ';'
my.h(19): error C2059: syntax error : ')'

或者:

my.h(21): error C2061: syntax error : identifier 'InsertPathInRegistry'
my.h(21): error C2059: syntax error : ';'
my.h(21): error C2059: syntax error : 'type'

我在一些论坛上查看说这些错误通常是包含错误放置的错误,但我真的不知道在这种情况下,我不认为我在包含错误...

谁能照亮我?

谢谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com