Ich arbeite über DirectX-Shadern und C++ - Code in Visual Studio 2015 und möchte nur einen Code machen, also habe ich angefangen, mit Makros zu spielen, weil ich es als effektiven Weg ansehe, wie man das vereinheitlicht Code.HLSL-Präprozessor in Visual Studio 2015
Der HLSL-Präprozessor in Visual Studio unterscheidet sich ein wenig von dem C++ - Präprozessor, z. Es unterstützt keine Variadic-Makros. auf der anderen Seite ist die grundlegende Arbeit die gleiche (siehe documentation).
Mein Problem ist, dass, wenn ich folgenden Code verwenden:
STATIC_TRAITS_DECLARATION SimpleVertexDefinition(PARSER_MEMORY, CONTEXT_MEMORY)
Wo alle Bedingungen (SimpleVertexDefinitions, STATIC_TRAITS_DECLARATION, CONTEXT_MEMORY, PARSER_MEMORY) sind Makros, funktioniert alles einwandfrei. Aber wenn ich versuche, es zu definieren, indem folgende Makro
#define DECLARE_VERTEX_SHADER_INPUT(type) STATIC_TRAITS_DECLARATION type##Definition(PARSER_MEMORY, CONTEXT_MEMORY)
DECLARE_VERTEX_SHADER_INPUT(SimpleVertex)
ich
Error X1516 not enough actual parameters for macro 'SimpleVertexDefinition'
Error X3000 unrecognized identifier 'SimpleVertexDefinition'
Durch die Art und Weise
- C++ Präprozessor hat kein Problem, es zu kompilieren
- Macro Verkettung funktioniert gut in anderen HLSL-Codes.
ich froh wäre, wenn jemand kann mir erklären, was falsch ist, weil ich glaube, dass meine Makros geschrieben werden nach documentation ...
Kann jemand es bestätigen? – user4663214