小编Qoo*_*bee的帖子

C99引用内联函数:对XXX的未定义引用,为什么要将它放到标题中?

gcc是否完全符合C99标准中规定的内联模型?

我已经浏览了一些关于这个问题的信息.但我无法理解为什么必须使用"extern"或"static"指定内联函数.

在.c文件中,调用在同一转换单元中定义的内联函数会导致错误.编译器行为的原因是什么?

我发现一个帖子是"内联"而没有"静态"或"外部"在C99中有用吗?

这是什么意思?

如果在内联定义可见的情况下调用某些具有外部链接的函数func,则行为与调用另一个函数(例如__func,具有内部链接)的行为相同.

c

6
推荐指数
2
解决办法
8695
查看次数

Spring Kafka 事务导致生产者每条消息的偏移量增加了 2

我在使用 Spring(boot) Kafka 的微服务中有一个消费-转换-生产工作流程。我需要实现 Kafka 事务提供的一次性语义。下面是代码片段:

配置

@Bean
public ProducerFactory<String, String> producerFactory() {
    Map<String, Object> props = new HashMap<>();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);
    props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 1024 * 1024);
    DefaultKafkaProducerFactory<String, String> defaultKafkaProducerFactory = new DefaultKafkaProducerFactory<>(props);
    defaultKafkaProducerFactory.setTransactionIdPrefix("kafka-trx-");
    return defaultKafkaProducerFactory;
}

@Bean
public ConsumerFactory<String, String> consumerFactory() {
    Map<String, Object> props = new HashMap<>();
    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
    props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 5000);
    props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
    props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
    props.put(ConsumerConfig.ISOLATION_LEVEL_CONFIG, "read_committed");
    return new DefaultKafkaConsumerFactory<>(props);
}

@Bean
public KafkaTemplate<String, String> kafkaTemplate() {
    return new KafkaTemplate<>(producerFactory()); …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka spring-kafka

3
推荐指数
1
解决办法
2569
查看次数

宏观扩张的奇怪行为

这是代码:

#include <stdio.h>
#include <stdio.h>
#define VAL1(a,b)    a*b
#define VAL2(a,b)    a/b
#define VAL3(a,b)    ++a%b
int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 3;
    int e = 5;

    int result = VAL2(a,d)/VAL1(e,b)+VAL3(c,d);  // result = 1
    //int result = a/d/e*b+++c%d;                // result = 0

    printf("%d\n", result);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么两个陈述的结果不一样?

c macros c-preprocessor

2
推荐指数
1
解决办法
121
查看次数

当存在与内联函数同名的extern函数时,会调用哪一个?

TEST.CPP

#include <iostream>
void f()
{
    std::cout<<"non-inline"<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include <iostream>
using namespace std;
inline void f()
{
    cout<<"inline"<<endl;
}

int main()
{
    f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在调试模式下,输出为:非内联.命令:g ++ [-g] -o main main.cpp test.cpp

在发布模式下,输出为:内联.命令:g ++ -O -o main main.cpp test.cpp

为什么?

Linux G ++ 4.7.3

在C99中,内联定义不提供函数的外部定义,因此我们可以通过在其他源文件中定义另一个函数来提供标识符的外部定义.

内联定义是否为C++中的函数提供了外部定义?

谢谢!!

c++

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

标签 统计

c ×2

apache-kafka ×1

c++ ×1

c-preprocessor ×1

java ×1

macros ×1

spring-kafka ×1