包含案例的不同标题

时间:2012-05-06 10:31:03

标签: c++-cli

是否可以使用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

2 个答案:

答案 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()
{
    // ...
}

如果您要发布更多代码和确切的错误消息,也许可以找到更好的解决方案。