小编Pie*_*don的帖子

我可以用什么预定义的宏来检测clang?

我正在尝试检测用于编译源代码的编译器.我可以很容易地找到预定义的宏来检查MSVC或GCC(例如参见http://predef.sourceforge.net/),但我找不到任何宏来检查clang.

有人知道clang是否定义了一个宏__CLANG__,以便知道当前正在编译我的代码的是什么?

c macros clang c-preprocessor

107
推荐指数
3
解决办法
3万
查看次数

将文件打包到ELF可执行文件中

我目前正在寻找一种方法来将数据添加到已编译的ELF可执行文件中,即将文件嵌入到可执行文件中而无需重新编译它.

我可以通过使用轻松地做到这一点cat myexe mydata > myexe_with_mydata,但我无法访问可执行文件中的数据,因为我不知道原始可执行文件的大小.

有没有人知道如何实现这个?我想在可执行文件中添加一个部分或使用特殊标记(0xBADBEEFC0FFEE例如)来检测可执行文件中数据的开头,但我不知道是否有更美妙的方法来执行它.

提前致谢.

embed binary file-format elf

7
推荐指数
1
解决办法
3027
查看次数

字段(位置,法线等)在D3D9顶点中的位置

我正在尝试阅读为DirectX应用程序创建的3D模型,这些应用程序按以下方式定义:

  • 在文件头中,给出了网格的灵活顶点格式(FVF)(实际上,我在我测试的网格中有D3DFVF_ {XYZ,DIFFUSE,NORMAL,TEX1,TEX2}的任意组合)
  • 然后,n顶点以线性模式给出,字段根据FVF呈现.

但是,我不知道这些字段的顺序.逻辑是它在DirectX文档中的某处定义,但我无法找到它.例如,这两个结构中的哪一个是正确的FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_NORMAL(C语法,但这个问题适用于每种语言)?

// This one ?
struct vertex1
{
    D3DVERTEX pos;
    DWORD color;
    D3DVERTEX normal;
};

// Or this one ?
struct vertex2
{
    D3DVERTEX pos;
    D3DVERTEX normal;
    DWORD color;
};
Run Code Online (Sandbox Code Playgroud)

我希望对所有可能的字段(例如,XYZ before DIFFUSE before NORMAL before TEX1 before TEX2)提出这个问题的一般答案.指向文档右页的指针也没问题,因为我无法找到它:).

directx direct3d

5
推荐指数
1
解决办法
1328
查看次数

函数返回结构中的错误

#include<stdio.h>
#include "amicablenumber.h"

int i,j;
struct amicable         
{
    int **amicablePair;
    int size;
};

main()
{

int startnum = 250;
int endnum = 1000;
struct amicable* ami;

ami = getAmicablePairs(startnum, endnum);   

printf("{");
for(int i = 0; i<ami->size; i++)
{
printf("{%d, %d}",ami->amicablePair[i][0], ami->amicablePair[i][1]);
}
printf("}");
}

amicable *getAmicablePairs(int startnum,int endnum)
{
    int size=0;
    int sumfactors(int);
    amicable record;
 for(i=startnum;i<=endnum;i++)
 {
 for(j=endnum;j>=startnum;j--)
 {
 if((sumfactors(i)==j)&&(sumfactors(j)==i) && (i!=j))
 {
  record.amicablePair[size][0]=i;
  record.amicablePair[size][1]=j;

  size++;
 }}}
 record.size=size;
 return record;
 }

  int sumfactors(int number)
 {
 int sum=0;
 for(i=1;i<number;i++)
 {
 if(number%i==0) …
Run Code Online (Sandbox Code Playgroud)

c pointers structure function

0
推荐指数
2
解决办法
471
查看次数

是否在C中超载?

变量长度参数如何列出printf() , scanf(), etcC中的函数与C++中的函数重载有何不同?

这是怎么回事

printf("Didnt Work %s",s);

与......不同

printf(s,"Didnt Work %s");

其中s定义为:

const char *s="string";
Run Code Online (Sandbox Code Playgroud)

请解释.

c c++ variadic-functions

0
推荐指数
1
解决办法
146
查看次数