问题标签 [preprocessor-directive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 宏编译器错误:当参数名称出现在别处时出现“解析问题”
我尝试制作一个简单的宏来在 iOS 中创建和显示一个简单的“ok”对话框:
如果我尝试在我的代码中使用它:
我得到错误:
解析问题。预期的 ']'
并且错误似乎指向第二个@
之前"Message"
。
但是,如果我只是复制粘贴宏,我不会收到此错误:
是否反对在宏中使用 Objective-c 结构?或者那是别的什么?
c++ - 在预处理器指令中使用变量
在预处理器指令 file.cpp 中可以使用哪个全局变量
或者
文件.cpp
或文件.cpp
在处理程序指令中使用变量的规则是什么?如果一个变量可以恒定折叠,它可以在#if/#elif#else 指令中使用吗?
c++ - 根据项目定义不同的功能
我目前有两个 c++ 项目,它们共享许多相同的源文件和头文件。其中一个是游戏服务器,另一个是客户端。我的一些类具有客户端或服务器独有的功能,因此只能为其中之一编译。但是,我不确定该怎么做。到目前为止,我的尝试是:
在Client.h
#define IS_CLIENT
(包括 main 函数)和#define IS_SERVER
Server.h 中使用。这失败了,因为其他头文件必须使用#include
它们(所以当我想编译某些东西时,我最终不得不修改所有头文件)使用
#include "CompileType.h"
where CompileType.h 定义 IS_CLIENT 或 IS_SERVER。这是与以前的方法不同的一项重大改进,但仍然让我在想要编译时更改文件。
两种尝试都使用#ifdef
并#endif
围绕 .cpp 文件中的选择函数定义。
如果可能的话,一个可能的解决方案是#define
在全球范围内(因此它会影响所有源文件和头文件)。我的 IDE (Code::Blocks) 设置中可能还有一些我还没有看到的东西。
对此问题的任何见解将不胜感激。
c - 预处理阶段和多个文件(基础)
我有三个文件,想编译它。
第一个文件是 app.c
第二个文件是 sum.h
第三个文件 sum.c
我写下这些陈述:
防止内容的多重定义sum.h
。
在编译期间app.c
会进入预处理阶段然后sum.c
进入预处理阶段我的问题当sum.c
进入预处理器时如何知道SUM_H
myapp的最后一个文件中定义的?我认为每个源文件分别进入预处理阶段和编译阶段。
c-preprocessor - 编辑/重新定义常量字符串:是的,我知道矛盾
我正在尝试更改常量变量值,是的,我知道我正在做的事情的矛盾,但是有一种方法可以解决我的疯狂。
你看我正在用一种非常类似于C /C++ 的语言编写,称为 4dm,但它不允许函数之外的任何代码,所以我试图通过使用预处理器命令来克服这个问题。原因是我可以在语言中实现某种形式的专业化。第一步涉及能够编辑常量字符串。
尽管这是一种不同的语言,但预处理器的运行方式与 C 和 C++ 编译器完全相同:
以下是连接字符串的简单尝试,但我收到一个编译错误,说明MY_STR is not defined
如何解决此问题?
c-preprocessor - 预处理器指令:#elif 未定义?
是否有预处理器指令检查是否未定义常量。我知道该#ifndef
指令,但我也在寻找#elif not defined
指令。#elif not defined
存在吗?
这就是我将如何使用它:
c-preprocessor - 允许 GUI 库扩展的预处理器宏功能
我正在尝试创建一个预处理器宏函数,为我正在制作的我自己的 GUI 库注册回调函数。该库旨在通过使用上述宏功能由第三方轻松扩展。
我的问题:我的宏函数包括我认为不允许的其他预处理器指令。我想对我的 REGISTER_CUSTOM_CALLBACK_FUNCTION 进行编码,以允许用户创建自己的小部件并使用主 GUI 库注册自己的回调函数。有什么想法我仍然可以实现我想要做的事情吗?
这是每个时钟步骤调用的主窗口回调:
有什么想法可以编写我的 REGISTER_CUSTOM_CALLBACK_FUNCTION 以允许用户创建自己的小部件并使用主 GUI 库注册自己的回调函数?
c# - 将这行 vb 代码转换为 C# 时遇到问题
我有一个正在尝试转换为 C# 的 vb.net 项目。我有一个名为 MyWebExtension.vb 的文件,其中有这行代码#If _MyType <> "Empty" Then
我试图转换成 C##if (_MyType != "Empty")
当我运行应用程序时,我收到以下错误:
无效的预处理器表达式。
我的转换做错了什么?
c++ - 对共享文件使用预处理器指令
我有一个带有以下预处理器指令的 .cpp 文件(我们称之为 check.cpp):
check.cpp 文件用于两个不同的项目。(项目在同一个文件夹中并共享同一个 check.cpp 文件,该文件也在同一个文件夹中)
我希望一个项目执行此代码,但另一个项目不执行此代码。
所以最后,对于 ProjectA,check.cpp 将具有:
对于 ProjectB,check.cpp 将具有:
是否可以使用预处理器指令,或者可能有更简单的方法?
我的想法是使用
并将其放在其中一个项目中而不是另一个项目中,但 .cpp 文件需要包含 #define 才能工作,并且该文件是共享的...
有任何想法吗?
c# - 如何取消定义符号 CONTRACTS_FULL?
如果您在项目属性页面的代码合同选项卡中启用合同检查,Visual Studio 会自动定义CONTRACTS_FULL符号。
- C# 5.0 简而言之(第 518 页)
我想禁用/取消定义该符号,但它没有出现在项目设置Conditional compilation symbols
的选项卡字段中。Build
(我对完全禁用代码合同不感兴趣!我只是说将合同检查设置None
为不是解决方案)。
如果这很重要,我想这样做的原因是因为在我的发布版本中我只想抛出Contract.Requires<TException>
,而我根本不想抛出ContractException
。
我发现的一个“解决方案”是放在#undef CONTRACTS_FULL
每个文件的第一行,它修复了它,但实际上这样做会很糟糕。
(顺便说一句,到目前为止 VS 没有定义CONTRACTS_FULL
,我必须自己定义它,但我猜有些设置不小心改变了)