c-preprocessor

    0热度

    2回答

    我目前正在C中进行一个项目,其中有各种功能都需要封装在两个其他函数之间。示意性地,它看起来像这样: int func1(int arg) { prepare(); doStuff(); undo(); return stuff; } char func2(int arg1, char* arg2) { prepare(); doOth

    0热度

    1回答

    我遇到了英特尔编译器的一个问题,并想知道是否有办法自动缩小预处理源的大小。看起来很多标准头文件(其中不乏一些不必要的代码)被拉进来,我想尽量减少它以帮助工程师解决问题。

    2热度

    2回答

    什么是“ICT_TOOLS_H__”?它是我在这里定义的标题,还是它是布尔值,还是1或0的整数?名称必须与头文件相同,还是可以是自定义名称?另外,如果标题包含在多个.cpp文件中,是否使用#ifndef,或者即使它只包含一次?当编译器第一次通过时,是否定义了“ICT_TOOLS_H__”,并且在其他每次通过时都不重新编译头,从而防止同一头的多个编译? #ifndef ICT_TOOLS_H__ /

    1热度

    3回答

    我想在编译时将C include文件的名称指定为C标志。 例如 #include MY_INCLUDE_FILE int main(int argc, const char * argv[]) {...} 将由预处理器用不了两年时间,以 #include "some_incfile.h" int main(int argc, const char * argv[]) {...} 做这样

    2热度

    3回答

    我开始编码C在vim和我有一些问题。 反斜杠旨在联接线,但是当我尝试写: ret\ urn 0; 我得到 return 0; ,当我urn;前加空格,留样,如果没有加入。 ret\ urn 0; 它保持那样。 为什么在第二种情况下我不明白return 0;但 ret urn 0; 代码: CPP输出: 命令: gcc -E -Wall -Wextra

    3热度

    4回答

    我需要将在编译时进行评估宏,是这样的: #define FIND_RANGE(x) \ if x>16 \ 32 \ elif x>8 \ 16 \ elif x>4 \ 8 \ elif x>2 \ 4 \ elif x>1 \ 2 \ else \ 1 \ endif \ 因此,代码 #define S1 FIND_RANGE(7) unsinged int i

    1热度

    2回答

    我必须维护具有通用组件和产品特定组件的C代码。我想简化我的代码,这样我只有一个通用product.h文件,其中有像 #if (PRODUCT_ID == 1) #define PRODUCT_NAME Product1 #else #if (PRODUCT_ID == 2) #define PRODUCT_NAME Product2 #else

    0热度

    1回答

    我想初始化一个下面的结构体,名为arduino_lcd_t。因为我使用的外设可以一次写入四位数据,或一次写入八位数据,所以我决定使用一个宏来相应地定义它自己。但是,我无法编译此代码,可能是因为#ifdef的宏。我得到了警告 declaration does not declare anything 难道只有一些我没做对的事情,或者不能这样做吗?相关代码如下。 #define FOUR_BIT_

    4热度

    2回答

    我有一个C函数,它需要一个uint8_t *参数,它必须指向32位对齐的内存。是否有可能在C或C++或任何特定平台的宏中为参数添加一些修饰,以便编译器或链接器在构建时抛出错误(如果未按需要对齐)? 这里的想法是,我想保护功能,防止其他用户(或我在6个月内)使用不当。我知道如何调整我想传递给它的东西。我想确保没有人可以通过将错误的东西传递给它。 基于this answer,我想回答我的问题是“不”,

    2热度

    4回答

    我正在使用Gnu cc编译器Gcc来编译我的C程序。考虑一个程序, #include <stdio.h> int main(){ return 0; } 现在,当我预处理使用上面的代码, cpp sample.c > sample.i 我得到了很多的内容sample.i我还没有包括在内。说,'stdio.h'文件是预处理。如果是这样的话, 问题1: 为什么有这么多的线路在我的