是否可以使用case 1
一个标头和case 2
另一个标头?
因为当我在程序中使用两个标题时,我遇到了ambiguous symbol
个错误。
标题1(winapifunctions.h)
#include <Windows.h>
void CallWindowProc(String^ windowtitle)
{
};
标题2(classes.h)
using namespace System;
using namespace System::Collections::Generic;
public delegate void Super();
public ref class Event{};
public ref class MyException:public DivideByZeroException{};
public interface class IType{};
public interface class IVal{};
public ref class Writer abstract{};
public ref class Check: public Writer,public IType,public IVal
.....other classes
主程序
#include "stdafx.h"
#include "classes.h"
#include "winapifunctions.h"
int main(array<System::String^>^ args)
{
//read x
switch(x){ case 1: {CallWindowProc("title");break;} case 2: { Check^ obj = gcnew Check();break;}
};
和错误 - IServiceProvider:ambiguous symbol
答案 0 :(得分:4)
简短回答:否。
长答案:包含在编译期间由预处理器处理,而在运行时期间处理case
语句。在运行时期间无法进行编译时的事情。
你想要达到什么目的?
答案 1 :(得分:0)
您可以使用以下代码解决此问题:
// 1.cpp
case 1:
DoCase1();
break;
case 2:
DoCase2();
break;
// 2.cpp
#include <Windows.h>
void DoCase1()
{
// ...
}
// 3.cpp
#include <AnotherHeader.h>
void DoCase2()
{
// ...
}
如果您要发布更多代码和确切的错误消息,也许可以找到更好的解决方案。